2017-12-24 9 views
2

入力された整数に1がある場合はtrueを返し、そうでない場合はfalseを返すメソッドを作成しようとしています。入力された番号に1が付いていないか、1で終わっている場合は正しく動作します。しかし、intの最後の数字が1つでもない場合は、誤ってfalseを返します。どんなアイデアが間違っていますか?ここに私のスクリプトは次のとおりです。 Javaメソッド:整数が1を含む

public static boolean hasOne(int n) { 
    boolean retval = false; 

    if (n % 10 == 1) { 
     retval = true; 
    } else { 
     dropLastDig(n); 
    } 
    return retval; 
} 

public static void dropLastDig(int input) { 
    int newNum = input/10; 

    if (newNum > 0) { 
     hasOne(newNum); 
    } 
} 

1000年

234がfalseを返す必要があります

3がfalseを返す必要があります

1がtrueを返す必要があります

211がtrueを返すtrueを返す必要があります

+0

あなたは何を意味しますか「持っている?」 '1000'は数えますか? – ThomasEdwin

+0

正しいです – Hnorth

+0

ヒント: 'hasOne'のelse部分を実行すると、戻り値は常に' false'になります – Henry

答えて

2

を試してみてください。

public static boolean hasOne(int n) { 
    if(n<0) return hasOne(-n); // check for negatives 
    if(n==0) return false; // exit condition 

    if (n % 10 == 1) { 
    return true; 
    } 
    return hasOne(n/10); 
} 

または文字列にキャストして、確認してください。

String.valueOf(n).contains("1"); 
+1

私はそれが否定を確認するべきだと思う – ThomasEdwin

+1

真、修正を加えました。 – Beri

2

代わりにString.valueOfを使用してください

return String.valueOf(x).contains("1"); 
1

あなたはそれが高速です、再帰関数を使用することができますString.valueOf(n).contains("1")

関連する問題