Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java将文件中的文本数组声明为double_Java_Arrays_File_Double - Fatal编程技术网

java将文件中的文本数组声明为double

java将文件中的文本数组声明为double,java,arrays,file,double,Java,Arrays,File,Double,我在文件中的文本上声明数组时遇到一些困难。换句话说,我试图将文件中的信息存储到一个数组中作为double[],并使用增强的for循环显示该数组。该文件仅包含12个十进制数字。任何帮助都将不胜感激。下面是我的代码片段: // create inFile2 variable Scanner inFile2 = new Scanner("/Users/timothylee/KeyWestHumid.txt"); // while statment for inFile2 w

我在文件中的文本上声明数组时遇到一些困难。换句话说,我试图将文件中的信息存储到一个数组中作为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
        }
    }

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

你需要像这样做

for(int i = 0; i < humidity1.length; i++) 
    humidity1[i] = inFile2.nextDouble();
for(int i=0;i
我现在试一试,您的代码中有两个问题:

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

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

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();
    }

}
publicstaticvoidmain(字符串[]args){
试一试{
//启动扫描仪以读取文件内容
Scanner Scanner=new Scanner(新文件(“D:\\temp\\backup\u branch\\test.txt”);
//请注意数组维度(请参见答案中的注释!)
List numbersFromFile=new ArrayList();
while(scanner.hasNext()){
double num2=scanner.nextDouble();
//把每个数字加起来
numbersFromFile.add(num2);
}
//将其作为数组
//Object[]vals=numbersFromFile.toArray();
//双d=(双)VAL[0];
//系统输出打印ln(d);
//打印出来
for(双d:numbersFromFile){
系统输出打印ln(d);
}
}catch(filenotfounde异常){
e、 printStackTrace();
}
}
注意:我似乎缺少泛型和基元类型,所以不要依赖此解决方案的泛型部分。它将向您展示,您首先希望用数据填充数组,然后使用新的for循环迭代现有数组

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);
}