整数は文字列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)=1
とInteger.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;
}
によって
を交換して、完全なナンセンスです。入力が基数10である場合にのみ機能しますが、これは結果を前提とした悪いケースです。 – EJP
@EJPが間違っています。 num%10は、numが基数2か基数10かどうかにかかわらず同じ答えを返します。numの各桁が基本システム内で有効かどうかを確認するだけです。 –