2011-10-27 9 views
-1
import java.util.Scanner; 

public class MatchesMethodTest { 

    public static void main(String[] args) {  
     String s; 

     Scanner input = new Scanner(System.in); 
     System.out.print("Input one real number to one decimal place and one natural number(ex. 1.4 5): "); 
     s = input.next(); 

     if (s.matches("\\f{1} \\d{1}$")) 
      System.out.print("You input correctly."); 
     else 
      System.out.print("You input incorrectly."); 
    } 
} 

小数点以下1桁に1つの実数を入力してください。プログラムは、ユーザーが正しく入力したかどうかを表示します。だから、私が1.4と5を入力すると、プログラムは "あなたが正しく入力しました"という印字をしたいのですが、代わりに "あなたは正しく入力しませんでした"というメッセージが出力されます。この問題を解決するにはどうすればよいですか?このプログラムは、入力値が正しいかどうかを区別するためのものです。

+4

スクリーンショットの代わりにコードと出力を貼り付けることはできますか? – PaoloVictor

+0

確かに私はパオロができます。 – schizoid322

答えて

2

あなたはそれがやりたいように見えるよう、\fは、浮動小数点数と一致していない - それは、「フォームフィードと呼ばれる文字の特別な種類と一致しましたキャラクター。"このチェックが一桁、ピリオド、数字、スペース、および最終桁ため

s.matches("\\d{1}\\.\\d{1} \\d{1}$") 

はに正規表現マッチを変更してみてください。 (あなたの「自然数」{1}用語によって一桁に制限されていることに注意してください。)

編集:また.next()方法が唯一の最初の整数をつかむ可能性があるため、input.nextLine()input.next()を変更する必要があります。テストされていない。

+0

まだ同じ結果です。 – schizoid322

+0

@ schizoid322:編集を参照してください。 – Tim

+0

私は本当にあなたの助けに感謝します。どうもありがとうございました!。 – schizoid322

関連する問題