Java 如何从用分号分隔的文件中读取整数?

Java 如何从用分号分隔的文件中读取整数?,java,io,Java,Io,因此,在我的代码中,我试图读取一个如下文件: 100 22 123;22 123 342;432 但当它输出时,它将包括:;ex100,22123;22,123,342;432} . 我正在尝试将该文件生成数组,例如{100,22123,22123…}。 有没有办法读取文件,但忽略分号? 谢谢 替换为 公共静态字符串[]readFilesString文件{ List<String> retList = new ArrayList<String>(); Scanne

因此,在我的代码中,我试图读取一个如下文件:

100
22
123;22
123 342;432
但当它输出时,它将包括:;ex100,22123;22,123,342;432} . 我正在尝试将该文件生成数组,例如{100,22123,22123…}。 有没有办法读取文件,但忽略分号? 谢谢

替换为

公共静态字符串[]readFilesString文件{

 List<String> retList = new ArrayList<String>();
  Scanner s2 = new Scanner(new File(file));
    for ( int i = 0 ; i < ctr ; i = i + 1){
         String temp = s2.next();
         String[] tempArr = se.split(";");
         for(int k=0;k<tempArr.length;k++) {
             retList.add(tempArr[k]);

         }
}

return (String[]) retList.toArray();

}使用正则表达式。将整个文件读入字符串将每个标记作为字符串读取,并在字符串中的每个标记后附加一个空格,然后在空格和分号处拆分

String x <--- contains all contents of the file
String[] words = x.split("[\\s\\;]+");

记住在用作数字之前将它们解析为int。

使用BufferedReader逐行读取然后按拆分的简单方法

public static String[] readFiles(String file)
{
BufferedReader br = new BufferedReader(new FileReader(file))) 
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
    sb.append(line);
    sb.append(System.lineSeparator());
    line = br.readLine();
}
 String allfilestring = sb.toString();
 String[]  array = allfilestring.split(";");

return array;
 }
您可以使用split,根据您的需求,使用regex将字符串拆分为数组

String s; // string you have read from the file
String[] s1 = s.split(" |;"); // s1 contains the strings separated by space and ";"

希望它有助于保留用于计算数组大小的代码。 我会改变你输入值的方式

    for (int i = 0; i < ctr; i++) {
       words[i] = "" + s1.nextInt();
    }

另一种选择是用空格替换完整文件字符串中的所有非数字字符。这样,任何非数字字符都将被忽略

BufferedReader br = new BufferedReader(new FileReader(file))) 
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
    sb.append(line);
    line = br.readLine();
}

String str = sb.toString();
str = str.replaceAll("\\D+"," ");
现在你有了一个用空格分隔的数字字符串,我们可以把它们标记成数字字符串

字符串[]final=str.split\\s+


然后转换为int数据类型。

你不想忽略分号,你想把它们当作分隔符,就像空格一样。忽略123中的分号;22将使它成为12322BTW,永远不要假装异常没有发生,只是为了让代码编译。仅当您打算对异常执行一些有用的操作时才处理它。请尝试使用nextInt而不是NextW。在可能的情况下,只读取一次文件。您可以使用ArrayLIst而不是String[],只解析文件一次。@J.L.Louis,它将在第一个分号处爆炸;22变成123和22我做了类似的事情,但没有阅读整个文件。它只会读最后一行。如果我打印出数组,它将只是每个元素的最后一行。阅读你想要的任何内容,然后使用split语句。
String s; // string you have read from the file
String[] s1 = s.split(" |;"); // s1 contains the strings separated by space and ";"
    for (int i = 0; i < ctr; i++) {
       words[i] = "" + s1.nextInt();
    }
BufferedReader br = new BufferedReader(new FileReader(file))) 
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
    sb.append(line);
    line = br.readLine();
}

String str = sb.toString();
str = str.replaceAll("\\D+"," ");