1

私は一晩中この問題に答えようとしてきましたが、私の脳は中間試験であまりにも揚げられていて、正しく答えることができないと思います. したがって、問題は正確に [引用] です: パラメータとして整数を受け取り、数値が「上位」桁と「下位」桁を交互に持つかどうかを返すメソッド 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;
 }
}

これはフェンスポスト スタイルの質問であることは理解していますが、解決できるようです。

4

2 に答える 2

0

これは私のために働いた

public class Practeese {    
 public static void main(String[] args) {
  System.out.println(highLow(1918193)); 
  System.out.println(highLow(7283));
  System.out.println(highLow(3827));
  System.out.println(highLow(9388));
  System.out.println(highLow(895151));
  System.out.println(highLow(707));
  System.out.println(highLow(44));
  System.out.println(highLow(45));  
  System.out.println(highLow(5));
  }
  public static boolean highLow(int n) {

      boolean high = false;
      boolean low = false;

      while (n > 0) { 

        if(n % 10 >= 5) {

            if(high) {
                 return false;

            } else {

                low = false;
                high = true;
            }

        } else {

            if(low) {
                return false;

            } else {

                high = false;
                low = true;
            }
        }

        n = n / 10;

      }

      return true;
 }

}

出力: true true true false false true false true true

于 2015-05-08T09:28:16.120 に答える