私は一晩中この問題に答えようとしてきましたが、私の脳は中間試験であまりにも揚げられていて、正しく答えることができないと思います. したがって、問題は正確に [引用] です: パラメータとして整数を受け取り、数値が「上位」桁と「下位」桁を交互に持つかどうかを返すメソッド highLow を記述します。0 ~ 4 は「下位」の数字で、5 ~ 9 は「上位」の数字です。メソッドは、渡された数字が「上位」桁と「下位」桁を交互に繰り返す場合は true を返し、そうでない場合は false を返す必要があります。渡された数値は正であると想定できます。渡された数値が 1 桁の場合、メソッドは true を返す必要があります。
注: このメソッドは、数値が「上位」桁から始まるか「下位」桁から始まるかを交互に繰り返す場合に true を返します。重要なのは、数字が交互になっていることです。たとえば、highLow(9292) と highLow(2929) の両方が true を返す必要があります。
メソッドの呼び出しとその結果の戻り値の例を次に示します。
コールの戻り値 highLow(1918193) true highLow(7283) true highLow(3827) true highLow(9388) false highLow(895151) false highLow(707) true highLow(44) false highLow(45) true highLow(5) trueこの問題を解決するために文字列を使用しないでください
そして、これは私の最近の試みです:
public class Practeese {
public static void main(String[] args) {
highLow(1918193);
highLow(7283);
highLow(3827);;
highLow(9388);
highLow(895151);
highLow(707);
highLow(44);
highLow(45);
highLow(5);
}
public static boolean highLow(int n) {
// boolean isHigh = true;
// boolean isLow = true;
boolean test = true;
while (n > 0) {
boolean isHigh = true;
boolean isLow = true;
if (n % 10 >= 5) {
isHigh = true;
} else if (n%10<=5) {
isLow = true;
} else {
return false;
}
n = n / 10;
if (n % 10 == 0 && (isLow!= isHigh)) {
test = true;
} else {
test = false;
}
}
return test;
}
}
これはフェンスポスト スタイルの質問であることは理解していますが、解決できるようです。