【问题标题】:Passing an array back to a main method将数组传回主方法
【发布时间】:2013-10-29 01:48:52
【问题描述】:

这里是主要方法:

public static void main(String[] args) throws IOException{
    int [] array = new int [1000];
    int[] getArray=FileArrayProvider(array);

    for (int y = 0; y < getArray.length; ++y)
        {
        System.out.print(array[y] + " ");
        }

我想将“数组”传递给下面的“FileArrayProvider”方法:

    public static int[] FileArrayProvider(int[] array1) throws IOException{
    File file = new File("RandomNumbers.txt");
    FileReader inputFile = new FileReader(file);
    BufferedReader in = new BufferedReader(inputFile);

    {String s =in.readLine();
    System.out.println("Array before sorting: ");
    while(s!=null)
    {int k = 0;
    array1[k] = Integer.parseInt(s); 
    System.out.print(array1[k]+" ");
    s = in.readLine();
}

        in.close();
        }
    return array1;
    }

问题是数组没有被传回主方法。它在“FileArrayprovider”方法中正确打印,但仅将数组的最后一个值传递回 main 方法,并用除此之外的所有零填充数组。任何提示或建议将不胜感激解决这个问题!谢谢

【问题讨论】:

  • 返回array1 没有意义,因为它与参数相同,并且您永远不会分配给它。

标签: java arrays methods pass-by-reference


【解决方案1】:

我注意到的一件事是,在您的 FileArrayProvider() 方法中,int k 永远不会增加,您基本上只更改了 array1 的第一个值。把它改成这个,看看是否有效。

String s =in.readLine();
System.out.println("Array before sorting: ");
int k = 0;
while(s!=null)
{
    array1[k] = Integer.parseInt(s); 
    System.out.print(array1[k]+" ");
    s = in.readLine();
    k++;
}

【讨论】:

    【解决方案2】:

    因为在 for 循环中,您在 main() 中打印数组

    System.out.print(array[y] + " ");

    您正在打印 array[y] 而不是打印新值 getArray

    【讨论】:

    • 感谢您的回答,但这仍然不能解决问题。数组在 FileArrayProvider 方法中正确打印,但是当我将它传递回 main() 并用零填充数组的其余部分时,它仍然只从数组中获取最后一个值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2013-12-15
    • 2010-10-23
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多