从txt文件java中提取整数

时间:2015-12-30 19:30:49

标签: java

从文件中提取一些整数值我遇到了一个很大的问题:

  

[41; 48; 36; 128; 1; ........... 105]

我试图用这段代码来做:

Scanner scanner = new Scanner(new File("ala1.txt"));
        int [] tall = new int [800];
        int i = 0;

        while(scanner.hasNext())
             {
             if (scanner.hasNextInt()){
                tall[i++] = scanner.nextInt();
             }

但它不起作用。谁能帮我 ??

3 个答案:

答案 0 :(得分:1)

问题是,扫描程序将[:等字符视为正确的文本,因此无法将[41;48;等标记解析为整数。要解决此问题,您可以将Scanner设置为将每个非数字字符视为分隔符。

由于Scanner使用正则表达式语法,您可以使用\D+之类的分隔符来表示

  • +一个或多个
  • \D非数字字符

所以你的代码看起来像

Scanner scanner = new Scanner(new File("ala1.txt"));
scanner.useDelimiter("\\D+");

while(scanner.hasNextInt()){
    System.out.println(scanner.nextInt());
}

答案 1 :(得分:0)

从行中提取所有整数:

Scanner scanner = new Scanner(new File("ala1.txt"));
String line = scanner.nextLine();
List<Integer> ints = new ArrayList<>();
Matcher m = Pattern.compile("\\d+").matcher(line);
while(m.find()) {
    ints.add(Integer.parseInt(m.group()));
}

答案 2 :(得分:0)

import java.io.BufferedReader; 
import Java.io.FileReader; 

public class ReadLine
{
  BufferedReader br = new BufferedReader(new FileReader("youtFile.txt"));
  try
  {
    String line;
    while((line= br.readLine())!=null)
    {
        System.out.pringln(line)
        int vl=Integer.parseInt(line);
    }
  }
 catch(Esception exo)
 {

 }

 finally
 {
    br.close();
  }

} 

如果一行中有多个值,则可以使用拆分方法。而不是解析为整数。

import java.io.BufferedReader;     import Java.io.FileReader;

public class ReadLine
{
  BufferedReader br = new BufferedReader(new FileReader("youtFile.txt"));
  try
  {
    String line;
    while((line= br.readLine())!=null)
    {
        System.out.pringln(line)
       for(int i=0i<line.split(",").length)
       {
            int vl=Integer.parseInt(line.split(",")[i]);
       } 
    }
  }
 catch(Esception exo)
 {

 }

 finally
 {
    br.close();
  }

}