2016-08-08 7 views
2

私はJavaで少し些細な回文クイズを作成しています。私はいくつかの点のチェックイン時にユーザのようなエラーメッセージが例えば「1011」又は「10」のように、多かれ少なかれ3桁の数よりも入力して表示する必要がある場合3桁の数字が回文かどうかを確認する方法は?

「が間違って入力されます。」私が代わりに文字列(String.length())で行うことができますしかし、私は、Javaでint.length()と数の長さをチェックすることはできません。

どのように私はこの問題を解決するだろうか?

これは、文字列にあなたのint型をオンにし、長さ機能を使用できる場合、3桁のチェック

import java.util.Scanner; 
public class Test { 
    public static void main(String[] args) { 
     System.out.println("Please enter a three digit number number and I will check if it's a palindrome."); 

     // create scanner and input number 

     Scanner input = new Scanner(System.in); 
     int number = input.nextInt(); 

     int digit1 = (int)(number/100); 
     int remaining = number % 100; 
     int digit3 = (int)(remaining % 10); 

     System.out.println(number + ((digit1 == digit3) ? " is a palindrome" : " is not a palindrome")); 


    } 
} 
+3

チェック '番号<1000 &&数> = 100'場合。 :|さらに、あなたは 'numberAsString'をやっています。長さを取得するためにlength()を呼び出すことができます。 –

+0

申し訳ありませんMridul!その行を削除するのを忘れました。今編集されました。 –

+1

数値がintの場合は、これを使用できます: 'number <1000 && number> = 100'。しかし、私は回文のためにそれに反対するだろう。どうして?ユーザーが '010'を入力した場合はどうなりますか? int型の場合は10と見なされ、エラーが発生します。文字列としては、それはパリンドロームになります。ユーザーにどの結果を表示するかを決めるのはあなた次第です。したがって、その方法を使用してください。 –

答えて

1

を数が特定のプロパティを持っているかどうかを確認するには、可能な場合、それは、数値演算を使用するのが最適です。これは、通常、より高速でより単純なコードにつながります。

3桁の最小数は3桁と100の最大数は、次のようにあなたがテストすることができます999です:

if ((number < 100) && (number > 999)) { 
    System.out.println("Not a three-digit number :(") 
} 
1

せずに私のコードです。

Integer.toString(yourNumber).length() 
+2

これは、あなただけのループ(隠された)数が100より大きく、1000未満であれば、チェック2つの比較、何もすることができたときに非常に遠回りで非効率的な方法ではありません。 – RealSkeptic

+1

問題に非効率かつ間違った解決方法を書こうと苦労していたことを知ったので、私は非常にばかばかしく感じます。ありがとう、私はこれを行うための良い方法があることを知っていたが、気づいていなかった。 –

1

あなたが入力を得ればif条件を追加します。

if (number >= 100 && number < 1000) { 
    //Proceed with your logic 
} else { 
    //Throw you message as invalid number 
} 
関連する問題