2

我正在尝试使用分隔符来提取文档中的第一个数字,其中 31 行看起来像“105878-798##176000##JDOE”,并将其放入一个 int 数组中。我感兴趣的数字是“105878798”,数字的数量并不一致。

我写了这个,但是当我到达(行的)第一个分隔符时,我不知道如何更改行。

   import java.util.*;
   import java.io.*;

   public class Test {
   public static void main(String[] args) throws Exception {
            int n = 0;
            String rad;

            File fil = new File("accounts.txt");
                int[] accountNr = new int[31];
            Scanner sc = new Scanner(fil).useDelimiter("##");

                    while (sc.hasNextLine()) {
                    rad = sc.nextLine();
                    rad.replaceAll("-","");
                    accountNr[n] = Integer.parseInt(rad);
                    System.out.println(accountNr[n]);
                    n++;
                    System.out.println(rad);
                }
       }
   }
4

2 回答 2

1

不要为此使用扫描仪,使用 StringTokenizer 并将分隔符设置为##,然后继续调用 .nextElement(),无论它有多长,你都会得到下一个数字。

StringTokenizer st2 = new StringTokenizer(str, "##");

while (st2.hasMoreElements()) {
    log.info(st2.nextElement());
    }

(当然,你可以用不同的方式迭代..)

于 2013-01-24T18:22:31.737 回答
0

我建议每条线路使用line.split("[#][#]")[0](当然要处理你的例外情况)。

同样,rad.replaceAll(...)返回一个新的字符串,因为字符串是一个不可变的对象。您应该parseInt在返回的 String 而不是rad.

只需在代码中使用以下内容而不是等效的 2 行:

String newRad = rad.replaceAll("-","");
accountNr[n] = Integer.parseInt(newRad);
于 2013-01-24T18:24:03.630 回答