Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得Tao中的下一个元素&x27;三元算子的元素理论?_Java - Fatal编程技术网

Java 如何获得Tao中的下一个元素&x27;三元算子的元素理论?

Java 如何获得Tao中的下一个元素&x27;三元算子的元素理论?,java,Java,我是一名大学生,正在学习编程的诀窍,这学期我必须学习面向对象编程。老师/工程师除了告诉我们的作业外几乎什么都没告诉我们,我在网上也没有发现任何线索。工作表如下所示:“在java中,使用三元运算符,获得元素理论中的下一个元素,例如“水生成木材”。首先,需要向用户请求一个输入,程序必须使用“if”检查输入元素是否有效语句,并使用三元运算符表示从扫描的元素生成的元素。我至少有一半的代码,但我对三元运算符部分一无所知,我知道它是如何工作的,我应该如何在语法方面构建它,但不知道如何正确使用它。以下是我所拥

我是一名大学生,正在学习编程的诀窍,这学期我必须学习面向对象编程。老师/工程师除了告诉我们的作业外几乎什么都没告诉我们,我在网上也没有发现任何线索。工作表如下所示:“在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" : ...);