如何将数组内容从另一个方法复制到main方法中的数组中?

时间:2015-02-08 16:52:55

标签: java arrays copy

我创建了一个包含文件内容的数组。这个数组不是我的main方法,而是另一种方法。我无法弄清楚如何将包含文件内容的数组复制到我的main方法中的数组中,这样我就可以从那里操作/追加信息。我收到一个错误,说它无法找到变量dataPieces。有人可以帮我解决这个问题吗?这甚至是使用文件的最佳方式,这样我就可以向用户显示信息并让它们附加信息吗? 感谢

   /**
Add in javadoc comments
*/


//import statements
    import java.io.*;
    import java.util.Scanner;
    import java.util.ArrayList;

public class Try { 
    public static void main(String[] args){
        String dataHolder[] = createFile();
        System.out.println(dataHolder);
    }

    public static String[] createFile(){
        //create file holding inventory information
        String dataPieces[] = new String[10];
        try{
            PrintWriter outputFile = new PrintWriter("inventory.txt");
            outputFile.println("3000.0");
            outputFile.println("Lamps 15.3 400");
            outputFile.println("Chairs 19.95 250");
            outputFile.print("Desks 95.0 300");
            int i =0;
            outputFile.close();

            File myFile = new File("inventory.txt");
            Scanner inputFile = new Scanner(myFile);

            while(inputFile.hasNext() && i<dataPieces.length){
                dataPieces[i] = inputFile.next();
                i++;
            }
            inputFile.close();
        }
        catch(IOException e){
            System.out.println("File cannot be created."); //what to say???????????<<<<<<<<
        }
        return dataPieces;
    }
}

2 个答案:

答案 0 :(得分:0)

您的createFile()方法已经返回一个数组,因此您的main方法应该只将该数组赋值给变量:

public static void main(String[] args){
    String[] dataHolder = createFile();
    ...
}

没有理由多次拨打createFile()

答案 1 :(得分:0)

你有类似的东西:

for(int i=0; i<dataHolder.length; i++){
    dataHolder[i] = createFile(dataPieces);
}

这里你试图创建inventory.txt文件10次,之后在循环中读取相同的10次,这将返回相同的数据。

所以你的方法createFile返回一个数组,即dataPieces,你可以把你的for循环更改为:

dataHolder = createFile();
for(int i=0; i<dataHolder.length; i++){
    ...do something with dataPieces which is referred by dataHolder now.
}

通过只读取和写入文件一次,然后在另一种方法中进一步操作数组。