Java 如何获得Tao中的下一个元素&x27;三元算子的元素理论?
我是一名大学生,正在学习编程的诀窍,这学期我必须学习面向对象编程。老师/工程师除了告诉我们的作业外几乎什么都没告诉我们,我在网上也没有发现任何线索。工作表如下所示:“在java中,使用三元运算符,获得元素理论中的下一个元素,例如“水生成木材”。首先,需要向用户请求一个输入,程序必须使用“if”检查输入元素是否有效语句,并使用三元运算符表示从扫描的元素生成的元素。我至少有一半的代码,但我对三元运算符部分一无所知,我知道它是如何工作的,我应该如何在语法方面构建它,但不知道如何正确使用它。以下是我所拥有的:Java 如何获得Tao中的下一个元素&x27;三元算子的元素理论?,java,Java,我是一名大学生,正在学习编程的诀窍,这学期我必须学习面向对象编程。老师/工程师除了告诉我们的作业外几乎什么都没告诉我们,我在网上也没有发现任何线索。工作表如下所示:“在java中,使用三元运算符,获得元素理论中的下一个元素,例如“水生成木材”。首先,需要向用户请求一个输入,程序必须使用“if”检查输入元素是否有效语句,并使用三元运算符表示从扫描的元素生成的元素。我至少有一半的代码,但我对三元运算符部分一无所知,我知道它是如何工作的,我应该如何在语法方面构建它,但不知道如何正确使用它。以下是我所拥
import java.util.Scanner;
public class P04OpTernário {
public static void main(String[] args) {
System.out.println("Choose an element");
Scanner in = new Scanner(System.in);
String element = in.next();
if (!element.equals("Fire") && !element.equals("Metal") && !element.equals("Water") && !element.equals("Wood")
&& !element.equals("Earth")) {
System.out.println("Element does not belong in Tao's Theory of the Elements");
}
}
}
我不知道在三元运算符测试条件下应该放什么,我已经尝试了一些方法,但没有必要做任何工作。建议?三元运算符可按如下方式使用
String nextElement = "Fire".equals(element) ? "Earth" : "Metal";
这意味着如果“Fire”
是元素,则下一个元素是“Earth”
,否则下一个元素是“Metal”
这就为“Fire”
找到了正确的答案,但对其他元素则没有。通过嵌套三元运算符,可以使它适用于另一个元素。例如,这适用于“火”
和“地”
:
通过嵌套越来越多这样的三元运算符,您可以使它对所有5个元素都有效。剩下的就留给你了。使用Java8,一个简单的switch case语句会容易得多
switch (nextElement) {
case "Fire":
..blah blah blah...
break;
case "Earth":
..blah blah blah...
break;
.
.
.
default:
System.out.println ("Element does not belon in Tao's Theory of the Elements");
break;
当然,如果您所关心的只是确保它是一个或另一个,那么这些情况可能都是由一个代码块组成的。您可以将三元运算符看作是
if else
语法的替代品。尝试将代码写成if else
块,然后将其转换为三元格式,如下所示:
String nextElement = element.equals("Fire") ? "Metal" : (element.equals("Metal") ? "Water" : ...);
这看起来确实比使用三元运算符容易得多,我本来会这样做的,因为我必须测试一个元素,并让它打印出“this element generations that element”这句话,但我要遵循混乱的指令。尽管如此,谢谢你,先生,这是非常值得赞赏的,这是非常清楚的三元运算符是如何工作的,但在尝试它时,我无法让它以我想要的方式工作。在每种情况下,这都是一个严重的进步,所以我不能再感谢你了。我再次尝试了这一点,但我得到了一个错误:“无法从布尔值转换为字符串;字符串literall没有用双引号正确地关闭”我在这里遗漏了什么?代码如下:String elemGenerated=element.equals(“Fire”)?“火生土”:元素。等于(“土”)?“地球产生金属”:元素等于(“金属”)?“金属产生水”:元素等于(“水”)?“水生木”:元素。等于(“木”)?“木生火”:元素。等于(“火”)@TwistedMaze
元素。equals(“Fire”)
应替换为字符串。它正在工作,但突然eclipse给了我一个“变量值未被使用”的消息。我遗漏了什么吗?这就是我所拥有的:else{String elemGenerated=element.equals(“火”)?“火生土”:(element.equals(“土”)?“土生金属”:element.equals(“金属”)?“金属生水”:element.equals(“水”)?“水生木”:element.equals(“木”)?“木生火”:“错误”);}in.close()@TwistedMaze,仅表示未使用变量elemGenerated
。
String nextElement = element.equals("Fire") ? "Metal" : (element.equals("Metal") ? "Water" : ...);