Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 从文件读入数组_Java_Arrays_File - Fatal编程技术网

Java 从文件读入数组

Java 从文件读入数组,java,arrays,file,Java,Arrays,File,我有一个有数字的档案。情况如下: 1 2 3 4 5 6 7 8 9 10 1 1 1 2 1 1 5 5 1 3 将数字读入数组时出现问题 下面是一段代码: Scanner file1 = new Scanner( new File("file1.txt") ); int lengt_h = 0; // Here Eclipse crashes... while( file1.hasNext() ) lengt_h++; int[] numberArray = new int[le

我有一个有数字的档案。情况如下:

1 2
3 4
5 6
7 8
9 10
1 1 1 2 1 1 5 5 1 3 
将数字读入数组时出现问题

下面是一段代码:

Scanner file1 = new Scanner( new File("file1.txt") );

int lengt_h = 0;

// Here Eclipse crashes...
while( file1.hasNext() ) lengt_h++;

int[] numberArray = new int[lengt_h];

for(int i=0; i<numberArray.length; i++) {
        numberArray[i] = file1.nextInt();
}

for(int n: numberArray) System.out.print(numberArray[n] + " ");
为什么代码不能正常工作

while( file1.hasNext() ) lengt_h++; // infi loop
hasNext当且仅当此扫描仪具有另一个令牌时,方法返回true

public boolean hasNext()
您没有读取下一个令牌,因此
hasNext()
将始终返回true

[编辑]

如果您事先不知道数组的大小,最好使用
ArrayList


[1]

在此处检查hasNext方法

上面写着“扫描器不会超过任何输入。”

因此,要进一步移动它,您应该移动到下一个令牌。

尝试以下操作:

List<Integer> numberArray = new ArrayList<Integer>();
while (file1.hasNext())
    numberArray.add(file1.nextInt());
for (Integer n : numberArray)
    System.out.print(n + " ");
List numberraray=new ArrayList();
while(file1.hasNext())
numberArray.add(file1.nextInt());
for(整数n:numberArray)
系统输出打印(n+“”);
  • 代码的问题是在
    while循环中没有移动
    Sacanner
    指针,因此它是无限循环
  • 在上次的
    for
    循环中,您试图从
    numberArray[n]
    访问元素,这是错误的,因为
    n
    本身是数组
    numberArray
    中的一个数字
  • 您可以尝试以下方法:

     public static void main(String args[]) throws FileNotFoundException {
            Scanner file1 = new Scanner(new File("d:\\data.txt"));
            int lengt_h = 0;
            while (file1.hasNext()) {
                lengt_h++;
                file1.next();
            }
            file1 = new Scanner(new File("d:\\data.txt")); // again put file pointer at beginning
            int[] numberArray = new int[lengt_h];
            for (int i = 0; i < numberArray.length; i++) {
                numberArray[i] = file1.nextInt();       // read integer from file
            }
            for (int n : numberArray)
                System.out.print(n + " ");
        }
    
    publicstaticvoidmain(字符串args[])抛出FileNotFoundException{
    Scanner file1=新扫描仪(新文件(“d:\\data.txt”);
    内部长度h=0;
    while(file1.hasNext()){
    长度h++;
    file1.next();
    }
    file1=new Scanner(新文件(“d:\\data.txt”);//再次将文件指针放在开头
    int[]numberArray=新的int[length_h];
    for(int i=0;i
    Eclipse崩溃,或者您的程序没有任何进展?您应该阅读
    Scanner.hasNext()
    的文档,看看那里发生了什么。
    hasNext()
    只是告诉您文件中是否有任何内容等待您。它实际上并没有超过这个数字。这里有一个无限循环,因为
    hasNext()
    总是返回
    true
    ,因为您只会不断检查下一个标记是否存在,但从未真正读取它