0

我在文件中的文本上声明数组时遇到了一些困难。换句话说,我试图将文件上的信息作为 double[] 存储到数组中,并使用增强的 for 循环显示数组。该文件仅包含 12 个十进制数字。任何帮助将不胜感激。下面是我的代码片段:

 // create inFile2 variable
    Scanner inFile2 = new Scanner("/Users/timothylee/KeyWestHumid.txt");

    // while statment for inFile2
    while(inFile2.hasNext()){

        // create double reader
        double num2 = inFile2.nextDouble();

        double[] humidity1 = new double[num2];

        // for-each loop for displaying humidity
        for(double humidity : humidity1){

            // display array for humidity
        }
    }
4

3 回答 3

0

我现在试了一下,您的代码中有两个问题:

首先以这种方式使用扫描仪:

Scanner s = new Scanner("Bla.txt");

调用 s.nextLine() 时将返回 'Bla.txt'。要获取文件内容,您需要将 File 对象传递给扫描仪,如下所示:

Scanner inFile2 = new Scanner(new File("/Users/timothylee/KeyWestHumid.txt"));

第二个问题是关于如何将这些值填充到数组中,这是我这样做的方法:

public static void main(String[] args){

    try {

        //Initiate the scanner to read the files content 
        Scanner scanner = new Scanner(new File("D:\\temp\\backup_branch\\test.txt"));

        //Have something to care about array dimensions (see note about this in the answer!)
        List<Double> numbersFromFile = new ArrayList<Double>();

        while(scanner.hasNext()){
            double num2 = scanner.nextDouble();
            //add every number
            numbersFromFile.add(num2);
        }

        //Have it as array
        //Object[] vals = numbersFromFile.toArray();
        //double d = (double) vals[0];
        //System.out.println(d);

        //Print it 
        for(Double d : numbersFromFile){
            System.out.println(d);
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

注意:我似乎缺乏泛型和原始类型,所以不要依赖这个解决方案的泛型部分。它更多的是向您展示您首先要使用数据填充数组,然后使用新的 for 循环遍历现有数组。

于 2013-11-13T12:51:30.317 回答
0

增强的 for 循环仅对查看数组/集合中的值有用。Java 不会通过引用传递,因此您的double humidity字段只是一个副本,而不是对数组的引用。

你需要做类似的事情

for(int i = 0; i < humidity1.length; i++) 
    humidity1[i] = inFile2.nextDouble();
于 2013-11-13T12:50:54.740 回答
0
Scanner s = new Scanner(new File("C:\\usr\\a.txt"));
double[] darray = new double[12];
int i=0;
while (s.hasNextDouble()) {
    darray[i++] = s.nextDouble();
}
for (double d : darray) {
    System.out.println(d);
}
于 2013-11-13T13:02:23.603 回答