0

このような文字列を含むファイルで整数値を読み取りたい:

1 (23 4 5)

これが私のJavaコードです

import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;


public class EssaiLecture {

    public static void main (String[] args){
        try {

            File file = new File("try.txt");


                Scanner sc = new Scanner(file).useDelimiter("");

           while(sc.hasNext()){

               try{

                  System.out.println(sc.nextInt());

               }
               catch (InputMismatchException in) {

                  sc.next();

               }

           }  

              sc.close();
            }
              catch (FileNotFoundException e) {
              e.printStackTrace();
            }


    }

}

出力は

1
2
3
4
5

ここに問題があります: 2 文字 (またはそれ以上) の文字で構成される整数値を読み取ることができません。

どうすれば解決できますか?

4

3 に答える 3

2

区切り文字として空を使用する出力から既に見られるようStringに、入力は個々の文字に分割されます — 数字以外のパターン式を使用できます

Scanner sc = new Scanner(file).useDelimiter("\\D+");

どこ

  • \\D- 数字以外に一致
  • +- 利用可能なすべての数字以外の文字に一致する貪欲な量指定子
于 2013-10-17T13:32:00.373 に答える
0

数字は常にスペースで区切られていますか?括弧と数字の間にスペースを追加できますか? その場合、区切り文字を " " に変更すると、正規表現の使用を回避しながら、それを行う必要があります。

于 2013-10-17T13:19:23.340 に答える
0

重要なのは、正規表現を使用して非数字を分割することです。

package controllers;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.regex.Pattern;


public class EssaiLecture {

    public static void main (String[] args){
        try {

            File file = new File("try.txt");

            Scanner sc = new Scanner(file).useDelimiter("[^0-9]");

            while(sc.hasNext()){

                try{
                    String string = sc.next();
                    int a = Integer.parseInt(string);
                    System.out.println(a);

                }
                catch (InputMismatchException in) {
                    sc.next();
                }
                catch(NumberFormatException e){

                }

            }

            sc.close();
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }


    }

}
于 2013-10-17T13:32:39.137 に答える