当前位置: 首页 > 面试题库 >

将字符串与枚举值进行比较的正确方法是什么?

杜茂
2023-03-14
问题内容

作业:剪刀石头布游戏。

我创建了一个枚举:

      enum Gesture{ROCK,PAPER,SCISSORS};

从中我想比较各种价值观来决定谁是计算机还是人。设置值就可以了,并且比较也可以正常工作(纸张覆盖岩石,岩石压碎剪刀,剪刀切碎纸张)。但是,我不能束手无策。只要有平局,该用户即被宣布为获胜者。

唉唉......废话......这将澄清:userPick是一个String具有价值rockpaperscissors。我无法用==比较userPickcomputerPick,正如你可以看到下面,是铸造类型Gesture从我的enum

      if(computer == 1)
         computerPick = Gesture.ROCK;
      else
         if(computer == 2)
           computerPick = Gesture.PAPER;
         else
           computerPick = Gesture.SCISSORS;
      if(userPick.equals(computerPick))
       {
          msg = "tie";
          ++tieGames;
       }
           etc....

我猜这是一个rock不等于ROCKString userPick无法匹配的问题,Gesture computerPick因为后者不是String。但是,我无法在教科书或Oracle的Java教程中找到类似情况的示例,因此我不确定如何解决此问题。

有什么提示吗?


问题答案:

我从你的问题是收集userPick是一个String值。您可以这样比较:

if (userPick.equalsIgnoreCase(computerPick.name())) . . .

顺便说一句,如果你是保证computer始终是一个值123(和没有别的),你可以将其转换为Gesture与枚举:

Gesture computerPick = Gesture.values()[computer - 1];


 类似资料:
  • 问题内容: 我正在用Java制作轮盘赌(我自己的版本),而玩家可以打赌的类型之一就是选择将要滚动的颜色。(偶数是黑色,奇数是红色)。有没有一种方法可以使用switch语句将字符串与枚举进行比较? 这就是我想要得到的,但这并不是让我在switch语句中使用枚举“颜色”。 问题答案: 您必须具有要在其上进行切换的枚举类型的实例(其 成员 )。您正在尝试打开Enum类本身,这是没有意义的构造。所以你可能

  • 我有一个枚举< code>Foo 下面我正在尝试检查我的枚举中是否包含字符串。 当我发送或for 时,这是有效的。当我发送<code>第一个</code>或<code>第二个</code>给<code>fooStr</code>时,如何使它工作?

  • 问题内容: 我有一个美国所有州的枚举列表,如下所示: 在测试文件中,我将从包含状态的文本文件中读取输入。由于它们是字符串,因此如何将其与枚举列表的值进行比较,以便将值分配给我设置为的变量: 我了解我需要浏览枚举列表。但是,由于值不是字符串类型,如何比较?这就是我盲目输入的内容。我不知道这是否正确。 问题答案: 试试这个 您可能要处理IllegalArgumentException,如果“ s”值与

  • 测试变量的常用方法是检查它是否引用singletone: 根据PEP-8,建议将此方法作为检查的唯一方法: 与None之类的单例进行比较时,应始终使用is或is,永远不要使用相等运算符。 虽然有时我发现以下测试在不同的来源: 这种方式看起来不错,但是我不太明白为什么简单易读的结构可以被所取代。它在某些情况下更有用,还是指代码风格? UPD:使用我发现非常有用(到目前为止):

  • 实现后缀计算器,需要检查运算符的优先级是否低于另一个运算符。以下是我到目前为止所拥有的: 我尝试了许多不同的方法来检查传入的字符的优先级,但都没有用。有没有简单的方法来比较一个枚举的两个值?我需要创建一个循环吗?

  • 我是MVC编程的新手。所以我用的是play框架。 获取未捕获的引用Error:未定义MODERATED