2017-10-23 3 views
-2

整数は文字列sとして入力されます。この関数は、整数が指定されたベースシステムにあるかどうかをチェックします。 ASCII値を与えるInteger.valueOf(char)ASCII値を返します

public static boolean isBase(String s, int base) { 
    for (int n=0; n<s.length(); n++) { 
     if (Integer.valueOf(s.charAt(n))>=base) { 
      return false; 
     } 
    } 
    return true; 
} 

Integer.valueOf(s.charAt(n))(INTベース2と10の間であると仮定する)。たとえば、s = '110'の場合、s.charAt(0)=1Integer.valueOf(s.charAt(0))=49です。代わりに整数値1を返すことはできますか?

編集:Crammeurがこれを正しく回答しました。また、これは動作します:

public static boolean isBase(String s, int base) { 
int num = Integer.valueOf(s); 
for (int n=0; n<s.length(); n++) { 
     if (num%(10)>=base) { 
      return false; 
     } 
     num = num/10; 
    } 
    return true; 
} 
+0

によって

Integer.valueOf(s.charAt(n)) 

を交換して、完全なナンセンスです。入力が基数10である場合にのみ機能しますが、これは結果を前提とした悪いケースです。 – EJP

+0

@EJPが間違っています。 num%10は、numが基数2か基数10かどうかにかかわらず同じ答えを返します。numの各桁が基本システム内で有効かどうかを確認するだけです。 –

答えて

1

をあなたの 'これはまた、作品'

Character.getNumericValue(s.charAt(n)) 
+0

シンプルで効果的です。ありがとう! –

-1
for(String c : s.split("")) { 
    if(Integer.valueOf(char) >= base){ 
     return false; 
    } 
} 
関連する問題