0

ユーザーが入力したデータを保存するために作成したJavaプログラムを実行しています。具体的には、songName、songArtist、songYear、songAlbumの4つの配列リストです。「songYear」のユーザー入力があり、プログラムが最大4桁の長さのみを受け入れ、それ以外の場合はエラーが発生するようにしたいのですが、これをどのように実現できますか? これがスクリーンショットです

addentryメソッドのコードは次のとおりです。

        public void addEntry(){
        String newName = ui.getString("Enter the name of the track");
        songName.add(newName);
        String newArtist = ui.getString("Who performs this track");
        songArtist.add(newArtist);
        String newAlbum = ui.getString("What album is this track from");
        songAlbum.add(newAlbum);
        System.out.print("What year was the track released? ");
        int newYear=input.nextInt(4);
        songYear.add(newYear);

        System.out.println("\n" + "Thank you, " +songName.get(songName.size()-1) + " has been added to the library.");
        System.out.println("\n" + "Press 2 to view your library." + "\n");
    } 
4

3 に答える 3

2

次のような正規表現を使用できます。^.{4}$

ユーザーが4桁を入力した場合のみを意味します-trueを返し、それ以外の場合はfalseを返します

ユーザーが4つの数字をYYYY使用したことを確認するには、次のようなものを使用します。

^(?=[1-9]+)\d{4}$

年が1または2で、その後に3つの数字が続くことを確認してください。この場合の有効な範囲は1000〜2999です。

^(?=[1-2][0-9]+)\d{4}$

最後に、コードは次のようになります。

 if(inputUserStr.matches("^(?=[1-2][0-9]+)\d{4}$")){
   // do some stuff
 }
  else{
   // print error about valid input form [YYYY]
  }
于 2012-10-24T21:52:22.437 に答える
0

1)ユーザーの入力を受け入れ、部分文字列メソッドを使用して、最初の4文字のみを保存します(最初の4文字が考慮されることをユーザーに指定します)。

2)4文字でない場合は、値を再入力するようにユーザーに求めることができます。

Scanner sc = new Scanner(System.in);

String a = sc.next();
        if (a.matches("...."))
        {
             System.out.print(a);
        }
            else 
        {
             System.out.print("Input again:" );   
             a = sc.next();
        }

4文字のサンプル正規表現を作成しました。ただし、いつでも変更できます。

于 2012-10-24T22:03:10.503 に答える
0

言語に完全に依存しますが、いくつかのアプローチは次のとおりです。

  • len関数を使用して文字列入力を確認します。また
  • それを整数に変換し、10,000未満であることを確認します。また
  • のような正規表現^\d{1,4}

文字列入力がすべて数値であることを確認するなど、他の検証チェックがあることは間違いありません。20年後に書かれた曲を入力しようとはしていませんが、考慮すべきチェックが追加されています。

于 2012-10-24T21:50:54.447 に答える