只需从文件中读取数字

时间:2014-08-11 16:16:02

标签: java

我在名为avar.txt的文件中有一系列行。在文件中,我尝试读取一个不以'£'字符开头的数字。为此,我写了下面的代码但是,我不知道如何获得它的数字。是否有可能直接从文件中获取数字而不是我的方法,实际上我的方法不起作用?

£Life                                  <--------------- do not read
£No File Name               Contents  <--------------- do not read

00  life.all                    ... 
£01 life.prt                    ...   <--------------- do not read
03  life.all                    ...
11  life.pl                     ...

£Expectation                           <--------------- do not read
£No File Name               Contents  <--------------- do not read
13  expectation.ops             ...
04  expectation.at              ...
£05 expectation.anil            ...   <--------------- do not read

预期读数; 00,03,11,13,04

请注意,每个数字都以<tab(i.e. whitespace)><number>

之类的标签字符开头

我没有工作的代码,(我不知道如何从中提取数字)

FileReader file = new FileReader("avar.txt");
BufferedReader read = new BufferedReader(file);

for( String tmp = null ; tmp = read.readLine() != null;){
    number.add(tmp);
}

3 个答案:

答案 0 :(得分:0)

我假设您只想使用该号码。如果您想使用其余部分,请更新您的帖子,我会更新答案。

因此,只有数字,您可以执行以下操作:

Scanner in = new Scanner(new FileInputStream("Avar.txt"));

while(in.hasNextLine){
    Scanner lineScanner = new Scanner(in.nextLine());
    if(lineScanner.hasNextInt()){
        int x = lineScanner.nextInt();
        // do something with x
    }

}

这将逐行读取您的输入。对于每一行,如果行以int开头(以"£01"开头的行不以int开头),那么int将存储在变量x中。之后你可以做w / e。如果你想要它们,你可以将它们传递给Array等......

BufferedReader版本:

BufferedReader file = new BufferedReader(new FileReader("Avar.txt"));
String line;
while((line = file.readLine()) != null){
    if(line.charAt(0) >= 48 && line.charAt(0) <= 57 ){
        String number = line.substring(0, 2);
        int x = Integer.valueOf(number);
        //do something with x
    }
}       
file.close();

Scanner版本相同的逻辑。

希望这有帮助

答案 1 :(得分:0)

FileReader file = new FileReader("avar.txt");
BufferedReader read = new BufferedReader(file);

for( String tmp = null ; tmp = read.readLine() != null;){

    String [] strNumArray = tmp.split(" ");

    number.add(strNumArray[0]);
}

上面的某些内容可能会将您的行拆分为由空格符号分隔的部分。

答案 2 :(得分:0)

你可以这样做。

File ifile = new File("avar.txt");
FileReader fr = new FileReader(ifile.getAbsoluteFile());
BufferedReader br = new BufferedReader(fr);

for (String line = br.readLine(); line != null; line = br.readLine()) {
  if (!line.startsWith("£")) {
       ...... Type your code.....//it takes line without "£" sign.
   }
 }

如果您只想要这样的数字。

Scanner in = new Scanner("Avar.txt");
while(in.hasNextInt)
{
    int n = in.nextInt();
}