0

私は検索を行いましたが、説明した例、または私の正確な質問に関連する例を見つけることができませんでした。A38484B3838のように、AとBの文字をキャンセルし、その間の数字を読み取るプログラムを作成しようとしています。使ってみました

    scanner.useDelimiter("[AB]");

しかし、それは機能しません。その後、無効な入力(私が読んでいるscanner.nextInt())をスローします。誰か助けてもらえますか?

4

2 に答える 2

3
public static void main(String[] args) {
  String s = "A38484B3838";
  Scanner scanner = new Scanner(s).useDelimiter("[AB]");
  while (scanner.hasNextInt()) {
    System.out.println(scanner.nextInt());
  }
}

を生成します

38484
3838

それはあなたが期待する出力のようです。

于 2012-10-14T18:27:13.967 に答える
0

正規表現を使用してみてください。それは本当にあなたの仕事を容易にすることができます。

public static void main(String[] args)
{
    String str = "A38484B3838";
    String regex = "(\\d+)";

    Matcher m = Pattern.compile(regex).matcher(str);

    ArrayList<Integer> list = new ArrayList<Integer>();

    while (m.find()) {
        list.add(Integer.valueOf(m.group()));
    }

    System.out.println(list);
}

上記のプログラムの出力:

[38484、3838]

于 2012-10-14T18:24:09.523 に答える