如何从文件中只读取整数?

时间:2012-12-02 11:47:59

标签: java file input java.util.scanner

当我尝试从文本文件中读取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 个答案:

答案 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,请使用正则表达式从行中获取数值