当我尝试从文本文件中读取int时,我遇到了问题。 我正在使用这种代码
import java.util.Scanner;
import java.io.*;
File fileName =new File( "D:\\input.txt");
try {
Scanner in = new Scanner(fileName);
c = in.nextInt();
n = in.nextInt();
} catch(Exception e){
System.out.println("File not Found!!!");
}
如果我的文字是这样编辑的
30
40
所以它会起作用(意思是c = 30,n = 40)。 但是如果我想编辑像这样的文本文件
c=30
n=40
我的代码不起作用。
如何更改我的代码以只读取数字并忽略“c =”和n =“ 或者除了数字之外的任何其他字符?
答案 0 :(得分:1)
您需要使用Scanner.nextLine
读取您的行,将=
上的每一行拆分,然后将第二部分转换为整数。
请记住在阅读任何一行之前进行检查 - Scanner.hasNextLine
。因此,您需要使用while
循环来读取每一行。
一个简单的实现,您可以根据需要扩展它: -
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] tokens = line.split("=");
try {
System.out.println(Integer.parseInt(tokens[1]);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
现在,如果您想稍后使用这些数字,也可以在ArrayList<Integer>
中添加这些数字。
答案 1 :(得分:1)
按照您要在输入文件中使用的格式,如果您使用java.util.Properties
会更好。您无需关心解析。
Properties props = new Properties();
props.load(new FileInputStream(new File("D:\\input.txt")));
c = Integer.parseInt(props.getProperty("c"));
n = Integer.parseInt(props.getProperty("n"));
您可以详细了解simple line-oriented format。
答案 2 :(得分:0)
您可以逐行阅读(Scanner.nextLine
)并通过询问isDigit()
答案 3 :(得分:0)
如果您的数据行始终采用相同的格式x=12345
,请使用正则表达式从行中获取数值