21

首先,问题是“编写一个 Java 程序,使用三元运算符找出三个数字中最小的一个。”

这是我的代码:

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.");
    }
}

我尝试在三元运算符中使用多个条件,但这不起作用。我缺席了几天,所以我真的不知道该怎么办,我老师的电话也关机了。有什么帮助吗?

4

14 回答 14

36

尝试

int min = x < y ? (x < z ? x : z) : (y < z ? y : z);

您还可以删除括号:

int min = x < y ? x < z ? x : z : y < z ? y : z;
于 2011-02-13T20:32:40.330 回答
14

由于这是家庭作业,我不只是要给你答案,而是一个算法,这样你就可以自己解决了。

首先弄清楚如何使用单个三元运算符编写 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);
    }
}
于 2011-02-13T20:32:48.973 回答
5

当您真的不需要时,您正在测试 z。您的三元运算符必须采用 cond ? ifTrue : ifFalse;

所以如果你有多个条件,你有这个:

条件1?ifTrue1 : cond2? if 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.");
    }
}
于 2011-02-13T20:34:29.807 回答
2
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);
}
于 2011-02-13T23:49:59.713 回答
2

I know it's late. Just for information this also works:

int smallestNum = (x<y ? x : (x=y)) < z ? x : z
于 2015-06-18T20:59:44.680 回答
1

最后一部分:(z<y && z<x) ? z缺少一个 ':' :

(z<y && z<x) ? z : some_value;
于 2011-02-13T20:32:16.283 回答
1

我的贡献 ...

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 ) );
}
于 2012-11-03T01:58:13.570 回答
1

我的解决方案:

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.");
}
于 2012-04-23T03:14:13.050 回答
1
public static void main(String args[]) {
    Scanner sc=new Scanner(System.in);
    System.out.println("enter the number and check heigest number of three number:-");
    int a=sc.nextInt();
    int b=sc.nextInt();
    int c=sc.nextInt();
    int max;
    max=(a>b&&a>c)?a:(b>a&&b>c)?b:(c>a&&c>b)?c:(a==b&&b==c)?a:0;
    
    System.out.println("the heigest number is:"+max);
    
于 2021-07-28T10:25:54.793 回答
0
public class questionNine{
  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);
    System.out.println(smallestNum);
  }
}
于 2022-02-01T11:45:33.210 回答
0

您错过了 z var minimumNum = (x<y && x<z) 之后的值?x : (y<x && y<z) ? y : (z<y && z<x) ? z:0; 试试这个,它有效

于 2020-10-31T17:01:13.870 回答
0

这个答案迟到了七年,所以我只给你代码:

int smallestNumber = (x > y) ? 
            ((y > z) ? z : y) : 
            ((x > z) ? z : x);

缩进应该解释代码,这只是一个三元组,它在初始条件上评估其他三元组x > y;/* 如果条件为真,则评估第一个三元组,否则评估第二个三元组。*/

于 2018-01-31T21:52:16.810 回答
-1
int min = (x<y)?((x<z)?x:z):((y<z)?y:z);
于 2011-02-13T20:36:10.123 回答
-1

最好的方法是使用 if 和 else 语句创建一个示例,然后在其上应用三元运算符(q

于 2014-02-22T07:01:13.693 回答