-3

このプログラムを作成するためのより効果的な方法を見つけたいです。if-else ステートメントの代わりに、他の形式のループまたはステートメントを使用することは可能でしょうか?

コードは次のとおりです。

class apples {
  public static void main(String[] args) {
    byte x, y;
    x = 15;
    y = 28;

    boolean state = (true || false);

    if (x == y) {
        System.out.println(state);
    } else if (x > y) {
        System.out.println(state);
    } else if (x < y) {
        System.out.println(state);
    } else {
        System.out.println(state);
    }

  }
}
4

5 に答える 5

2

出力は常に常に結果とtrue同じです。||truetrue

この行を削除します:

boolean state = (true || false);

次のように変更します。

  boolean state = (x==y);
    System.out.println(state);
于 2013-08-05T23:02:16.643 に答える
1

これはあなたがやりたいことの単なる例だと思います。そうでない場合、コードはSystem.out.println(true);rgettmanが述べたように置き換えることができます。

最後の else はもちろん決して実行されません。数値が等しいか、1 の方が大きいため、削除できます。

if (x == y) {
    System.out.println("They are equal");
} else if (x > y) {
    System.out.println("x is greater");
} else {
    System.out.println("x is smaller");
}

if-then ステートメントに代わるものは次のとおりです。

switch (Integer.compare(x, y))
{
   case -1: System.out.println("x is smaller"); break;
   case 0: System.out.println("They are equal"); break;
   default: System.out.println("x is greater"); // case 1
}

Integer.compareJava 7以降です。それ以前に使用する必要がありますInteger.valueOf(x).compareTo(y)

于 2013-08-05T23:04:44.960 に答える
0

周りのロジックについてはあまり詳しく説明しませんでしたstate

プログラムを作成するもう 1 つの方法は、目的の出力を取得するために、マップ内でMap<Integer, Output>、do 、およびルックアップを行うことです。Byte.compareTo(anotherByte)

于 2013-08-05T22:59:59.710 に答える
0

他の人が指摘したように:

boolean b = (true || false);

常に に設定さbtrueます。これはあなたが探しているものであり、次のようなものだと思います:

public static boolean compBytes(byte x, byte y)
{
    return (x.compareTo(y) > 0) ? true : false;
}

ただし、これは必要な場合にのみ機能<==、両方とも false を返します。あなたが本当に欲しいのは次のとおりだと思います:

public static int compBytes(byte x, byte y)
{
    return x.compareTo(y);
}

その後、switch ステートメントを使用してケースを処理できます。

于 2013-08-05T23:05:11.553 に答える