Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java的txt文件中提取整数_Java - Fatal编程技术网

从java的txt文件中提取整数

从java的txt文件中提取整数,java,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 (scanne

我在从一个文件中提取一些整数值时遇到了一个大问题,该文件如下所示:

[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();
             }

但它不起作用。有人能帮我吗

要从行中提取所有整数:

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()));
}
Scanner Scanner=新的扫描仪(新文件(“ala1.txt”);
字符串行=scanner.nextLine();
List ints=new ArrayList();
匹配器m=模式。编译(\\d+)。匹配器(行);
while(m.find()){
add(Integer.parseInt(m.group());
}

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

由于Scanner使用regex语法,所以可以使用分隔符,如
\D+
,它表示

  • +
    一个或多个
  • \D
    非数字字符
所以你的代码看起来像

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

while(scanner.hasNextInt()){
    System.out.println(scanner.nextInt());
}
如果一行中有多个值,则可以使用split.than方法将其解析为整数

导入java.io.BufferedReader; 导入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();
  }

} 
公共类读线
{
BufferedReader br=新的BufferedReader(新文件读取器(“youtFile.txt”);
尝试
{
弦线;
而((line=br.readLine())!=null)
{
系统输出pringln(行)

对于(int i=0i
它不起作用,更具体一点。它怎么不起作用?你在什么地方出错了吗?你得到了意外的输出吗?我想你的问题与
[41;
48;
等等都不是整数这一事实有关。好吧,你必须跳过
[
,当前需要一个接一个的整数
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();
  }

}