0

当我尝试从文本文件中读取 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 =”或除数字之外的任何其他字符?

4

4 回答 4

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>.

于 2012-12-02T11:49:34.357 回答
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"));

您可以阅读有关简单的面向行格式的更多信息。

于 2012-12-02T12:08:53.483 回答
0

您可以逐行阅读(Scanner.nextLine)并通过询问来检查行中的每个字符isDigit()

于 2012-12-02T11:50:45.373 回答
0

如果您的数据行将始终采用相同的格式x=12345,请使用正则表达式从该行获取数值

于 2012-12-02T12:08:42.153 回答