Java 从文本文件读取整数
我试图从文本文件中读取整数,但失败了。 它甚至无法读取第一个整数Java 从文本文件读取整数,java,java.util.scanner,Java,Java.util.scanner,我试图从文本文件中读取整数,但失败了。 它甚至无法读取第一个整数 public void readFromFile(String filename) { File file = new File(filename); try { Scanner scanner = new Scanner(file); if (scanner.hasNextInt()) { int x = scanner.nextInt();
public void readFromFile(String filename) {
File file = new File(filename);
try {
Scanner scanner = new Scanner(file);
if (scanner.hasNextInt()) {
int x = scanner.nextInt();
}
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("File to load game was not found");
}
}
我得到的错误是:NoTouchElementException。
该文件如下所示:
N,X1,Y1,X2,Y2,X3,Y3
readFromFile("file.txt");
而在这个例子中n等于3
我在main方法中将此方法称为a,如下所示:
N,X1,Y1,X2,Y2,X3,Y3
readFromFile("file.txt");
扫描程序使用空白作为默认分隔符。您可以使用useDelimiter进行更改,请参见此处:我不确定您是否希望在将整数与字符串分离后仅显示整数。如果是这样,我建议您使用BufferedInputStream
try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)))){
String input = br.readLine();
int count = 0;
for(int i = 0; i < input.length()- 1; i++){
if(isNumeric(input.charAt(i))){
// replace the Sysout with your own logic
System.out.println(input.charAt(i));
}
}
} catch (IOException ex){
ex.printStackTrace();
}
其中,isNumeric可定义如下:
private static boolean isNumeric(char val) {
return (val >= 48 && val <=57);
}
提供的输入不存在整数,因此NOSCHELEMENTEXCEPTION…以字符串形式存在于文本文件中,与X1、Y1等一样。文本文件中不存在整数。请注意,最好插入行:“scanner.close;”进入最后一个街区。试试{}catch{},finally{scanner.close;}finally负责释放资源。我想把它作为一行读取,然后扫描字符串。但是,难道没有其他方法吗?我想到的另一个建议是设计自己的定制inputReader。但是hasNext必须要实现这一点,我觉得这可能真的是太过分了。顺便说一句,扫描仪相当慢。如果您在问题中提到的是一个示例文件输入,并且您的实际文件相当大,我建议您使用BufferedReader方法