【问题标题】:Print String Variable altered in If statement [duplicate]打印在If语句中更改的字符串变量[重复]
【发布时间】:2017-05-24 23:14:40
【问题描述】:

我想以我今年年初才开始学习 Java 作为开头,因此感谢您的所有帮助!我目前正在开发一个 Shadowrun(第 3 版)程序,该程序将 Decking 变成命令提示符。我希望用户能够以主机颜色开始输入蓝色、绿色、橙色或红色,但也可以提供随机选项。

  Scanner user_input = new Scanner(System.in);
  String HostColor;
  System.out.println("What is the color of the Host? (Blue, Green, Orange, Red, Random)"); //Get the Host's Color
  HostColor = user_input.nextLine();
  Random rand = new Random();
while ((!HostColor.equals("Blue")) || (!HostColor.equals("Green")) || (!HostColor.equals("Orange")) || (!HostColor.equals("Red"))) { 
  if (HostColor.equals("Blue")) {
    ...
    break;
  }
  else if (HostColor.equals("Green")) {
    ...
    break;
  }
  else if (HostColor.equals("Orange")) {
    ...
    break;
  }
  else if (HostColor.equals("Red")) {
    ...
    break;
  }
  else if (HostColor.equals("Random")) {
    int RandomHost = (rand.nextInt(4));
      if (RandomHost == 0) {
      HostColor.equals("Blue");
      ...
      break;
      }
      else if (RandomHost == 1) {
      HostColor.equals("Green");
      ...
      break;
      }
      else if (RandomHost == 2) {
      HostColor.equals("Orange");
      ...
      break;
      }
      else if (RandomHost == 3) {
      HostColor.equals("Red");
      ...
      break;
      }
  }
  else {
    System.out.println("Invalid Command");
    System.out.println("What is the color of the Host? (Blue, Green, Orange, Red, Random)");
    HostColor = user_input.nextLine();
  }
  }
System.out.println("Host is a " + HostColor + "...");

代码在指定特定颜色时可以正常工作。但是,在选择随机选项然后打印整个结果时,而不是打印四种颜色中的一个,我的代码表示hostcolor是随机的。感谢任何有助于解决此问题的意见 - 在此先感谢!

【问题讨论】:

  • 这些break;s 看起来很有线。
  • if (RandomHost == 0) { HostColor.equals("Blue"); 第二部分是比较,不是分配。
  • HostColor.equals(" ") 不会随机设置HostColor 的值,这是一个比较,因此请正确分配。
  • 啊,好吧!所以我需要重新分配它而不是使用.equals!编辑:可悲的是,如果我不使用中断,至少在 IF 部分,代码循环/结束:(

标签: java assignment-operator comparison-operators


【解决方案1】:

HostColor.equals() 不是赋值,equals() 是比较方法,在这种情况下检查两个字符串是否相等。

else if (HostColor.equals("Random")) {
int RandomHost = (rand.nextInt(4));
  if (RandomHost == 0) {
  HostColor = "Blue";
  }
  else if (RandomHost == 1) {
  HostColor = "Green";
  }
  else if (RandomHost == 2) {
  HostColor = "Orange";
  }
  else if (RandomHost == 3) {
  HostColor = "Red" ;
  }
}

我建议您使用Switch statements 来比较string 而不是if-elseif。 Switch 似乎是编写此类条件代码的更简洁的方式。

【讨论】:

  • 这解决了问题!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2022-06-21
  • 1970-01-01
相关资源
最近更新 更多