まず、質問は「Javaプログラムを記述して、3項演算子を使用して3つの数値の最小値を見つける」です。」
ここに私のコードがあります:
class questionNine
{
public static void main(String args[])
{
int x = 1, y = 2, z = 3;
int smallestNum;
smallestNum = (x<y && x<z) ? x : (y<x && y<z) ? y : (z<y && z<x) ? z;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
}
三項演算子で複数の条件を使用しようとしましたが、うまくいきません。私は数日欠席していたので、何をすべきかよく分からず、先生の電話はオフになっています。助けがありますか?
試して
int min = x < y ? (x < z ? x : z) : (y < z ? y : z);
括弧を削除することもできます。
int min = x < y ? x < z ? x : z : y < z ? y : z;
これは宿題なので、私はあなたに答えを与えるだけでなく、自分で解決できるようにアルゴリズムを提供します。
最初に、単一の三項演算子を使用してmin(x、y)を記述する方法を考えます。
それができたら、三項演算子を使用するようにmin(x、y、z)の次のコードを変更してから、前の手順で作成したmin(x、y)のコードに置き換えます。
int min(x, y, z) {
if (x <= y) {
return min(x, z);
} else {
return min(y, z);
}
}
本当に必要のないときに、zをテストしています。三項演算子はcondの形式でなければなりませんか? ifTrue:ifFalse;
したがって、複数の条件がある場合、次のようになります。
cond1? ifTrue1:cond2? True2の場合:ifFalse2;
これを理解しているなら、下を見てはいけません。それでも助けが必要な場合は、以下をご覧ください。
また、より明確なネストしないバージョンも含めました(ネストする必要がないと仮定します。かなり。いので、割り当てでネストする必要がないことを願っています!)
。
。
ここに私が思いついたものがあります:
class QuestionNine
{
public static void main(String args[])
{
smallest(1,2,3);
smallest(4,3,2);
smallest(1,1,1);
smallest(5,4,5);
smallest(0,0,1);
}
public static void smallest(int x, int y, int z) {
// bugfix, thanks Mark!
//int smallestNum = (x<y && x<z) ? x : (y<x && y<z) ? y : z;
int smallestNum = (x<=y && x<=z) ? x : (y<=x && y<=z) ? y : z;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
public static void smallest2(int x, int y, int z) {
int smallest = x < y ? x : y; // if they are equal, it doesn't matter which
smallest = z < smallest ? z : smallest;
System.out.println(smallest + " is the smallest of the three numbers.");
}
}
public static int min(int x, int y, int z) {
return x<y?Math.min(x, z):Math.min(y, z);
}
public static void main(String[] args) {
int smallestNum = min(10, 12, 15);
System.out.println(smallestNum);
}
遅いことはわかっています。情報だけでこれも機能します:
int smallestNum = (x<y ? x : (x=y)) < z ? x : z
私の貢献...
public static int getSmallestNumber( int x, int y, int z) {
return x < y && x < z ? x : y < x && y < z ? y : z;
}
public static void main ( String ... args ) {
System.out.println( getSmallestNumber( 123, 234, 345 ) );
}
最後の部分:(z<y && z<x) ? z
に「:」がありません:
(z<y && z<x) ? z : some_value;
私の解決策:
public static void main(String args[])
{
int x = 1, y = 2, z = 3;
int smallestNum = (x < y && x < z) ? x :
(y < x && y < z) ? y :
(z < y && z < x) ? z:y;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
この回答は7年遅れで届くので、コードをお伝えします。
int smallestNumber = (x > y) ?
((y > z) ? z : y) :
((x > z) ? z : x);
インデントは、コードを説明する必要があります。コードは、初期条件x > y
;/*その条件が真の場合、最初の3項が評価されます。それ以外の場合、2項が評価されます。 * /