nextInt()不正确地拆分整数

时间:2016-03-13 19:17:57

标签: java

我正在尝试读取由空格分隔的整数组成的文件。 NextInt()似乎是将整数的最后一个零分开。因此,90被读为9和0. 500被读为50和0。

有没有人见过这个?

FileInputStream fs = new FileInputStream("test.txt");

Scanner input = new Scanner(new BufferedInputStream(fs));

int u = 0;

while (u < 200) {
    test.i = input.nextInt();
    System.out.println(test.i);
    u++;
}

fs.close();

这只是一个测试我是否正确读取文件的循环。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,如果使用nextInt()方法,则文件中存在浮点数,这将导致不匹配。其次,您的文件可能有9到0之间的空间,这就是为什么它们将9和0打印为两个不同的整数。

这是一个示例代码,它可以完成相同的操作而没有任何问题。

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Scanner;


public class IntReadFile {

    public static void main(String args[]){
    try{
        FileInputStream fs = new FileInputStream("text.txt");
        Scanner sc = new Scanner(new BufferedInputStream(fs));
        int u=0,i;
        while(u<30){
            i=sc.nextInt();
            System.out.println("Integer read:"+i);
            u++;
        }
        sc.close();

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

这是text.txt文件的示例输入,因此代码运行正常。

  • 1 2 3 3 3 4 5 90 20 20 20 10
  • 10 10 3 3 4 5 90 20 20 20 10
  • 3 3 4 5 90 20 20 20 10
  • 3 3 4 5 90 20 20 20 10
  • 3 3 4 5 90 20 20 20 10