-4

int[]私はJavaプログラムを作成し、のような文字列からを取得しようとしました1,2,5,2,11

ただし、最初に、ユーザーが「、」+数字などの正しい形式を入力したかどうかを判断する必要があります。これをJava正規表現としてどのように書くことができますか?

//set the default value of int[] a;
        int[] a  = {2,3,1,-2,2,7};  
        //set the UI;
        String text = JOptionPane.showInputDialog("please enter the array to be checked: ");
        String[] strs = text.split(",");
        System.out.println(strs);
        System.out.println(strs.length);
        int[] a2 = new int[strs.length];
        for(int i = 0; i < strs.length; i++){
            a2[i] = Integer.parseInt(strs[i]);
        }

皆さん、最初は明確にしないことをお詫びします。ユーザーに「、」+任意の正または負の数字のような形式を入力してもらい、「1、-2、1、3、+」のようにスペースを許容できます。 55インチ

4

2 に答える 2

5

これには正規表現はまったく必要ありませString#split(",")Integer#parseInt()

とにかく、正規表現だけでは文字列を数値に変換するのに十分ではありません。

于 2013-03-08T20:09:42.243 に答える
3

入力を検証するには、次のようなものを使用できます

if (text.matches("-?\\d+(,\\s?-?\\d+)*")){
    //try to split
}else{
    //inform user about wrong data format
}
  • -?マイナスはオプションであることを意味します
  • \\d+1桁以上を意味します。
  • ,\\s?-?\\d+「コンマ」、「空白」(1つまたはなし)、「マイナス記号」(1つまたはなし)、「数字」(1つ以上)を意味します。
  • (,\\s?-?\\d+)*これは、この構造が0回以上出現する可能性があることを意味します。
于 2013-03-08T20:13:14.577 に答える