Java 如何在super关键字中使用具有多个条件的三元运算符?

Java 如何在super关键字中使用具有多个条件的三元运算符?,java,ternary-operator,Java,Ternary Operator,我试图使用超级构造函数和三元运算符将下面的代码转换为一行代码。 尝试了多种方法,但都没有效果 if (c == 0) { super(Piece.JMAN, x, y, Color.red); } else if (c == 1) { super(Piece.JMAN, x, y, Color.green); } else { super(Piece.JMAN, x, y, Color.yellow); } 正如@jacobg在评论中所说的,你可以这样做 super(P

我试图使用超级构造函数和三元运算符将下面的代码转换为一行代码。 尝试了多种方法,但都没有效果

if (c == 0) {
    super(Piece.JMAN, x, y, Color.red);
} else if (c == 1) {
    super(Piece.JMAN, x, y, Color.green);
} else {
    super(Piece.JMAN, x, y, Color.yellow);
}

正如@jacobg在评论中所说的,你可以这样做

super(Piece.JMAN, x, y, c == 0 ? Color.red : c == 1 ? Color.green : Color.yellow)
出于可读性的目的,您可能希望将其拆分为两条添加括号的语句

Color color = (c == 0 ? Color.red : (c == 1 ? Color.green : Color.yellow));
super(Piece.JMAN, x, y, color);

正如@jacobg在评论中所说的,你可以这样做

super(Piece.JMAN, x, y, c == 0 ? Color.red : c == 1 ? Color.green : Color.yellow)
出于可读性的目的,您可能希望将其拆分为两条添加括号的语句

Color color = (c == 0 ? Color.red : (c == 1 ? Color.green : Color.yellow));
super(Piece.JMAN, x, y, color);

super(Piece.JMAN,x,y,c==0?Color.red:c==1?Color.green:Color.yellow)
@JacobG。为什么要在评论中回答“尝试过多种方法”,比如什么?如果你展示你的尝试,我们可以更好地帮助你找出你做错了什么。
super(Piece.JMAN,x,y,c==0?Color.red:c==1?Color.green:Color.yellow)
@JacobG。为什么要在评论中回答“尝试过多种方法”,比如什么?如果你展示了你所做的尝试,我们可以更好地帮助你找出你做错了什么。你为什么要这样做而不是使用switch语句呢?一个经验丰富的程序员可能不会遇到双条件运算符的可读性问题。这个问题也是专门针对这个问题提出的。我是一个初学者,正在处理大学里的旧编程作业。这是一个好主意吗?不,你应该让你的代码尽可能可读,除非你获得了性能,这是你的目标。@KingCold因为
super
构造函数调用必须是构造函数中的第一条语句,你必须内联进行计算。但是,如果表达式复杂,考虑将计算提取到<代码>私有静态< /代码>方法(即<代码>超级(CealCeCor(C))< /代码>。为什么你会这样做而不是使用开关语句?一个经验丰富的编码器可能没有双条件运算符的可读性问题。这个问题也是专门针对这个问题提出的。我是一个初学者,正在处理大学里的旧编程作业。这是一个好主意吗?不,你应该让你的代码尽可能可读,除非你获得了性能,这是你的目标。@KingCold因为
super
构造函数调用必须是构造函数中的第一条语句,你必须内联进行计算。但是,如果表达式复杂,请考虑将计算提取到<代码>私有静态< /代码>方法(即<代码>超级(CealCeCor(C))< /代码>)。