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

Java做while循环使字符串测试的行为有所不同

萧无尘
2023-03-14
问题内容

我对使用||的行为感到非常困惑。.equals函数上的运算符。我不能在字符串等上使用它吗?

这有效:

do{
  System.out.println("Play again? [Y/N]");
  //input: Y      
  play = in.nextLine();
  play = play.toUpperCase();

}
while(!"Y".equals(input) ); //breaks out of loop (as it should)

为什么不起作用?!

do{
  System.out.println("Play again? [Y/N]");
  //input: Y      
  play = in.nextLine();
  play = play.toUpperCase();

}
while( !"Y".equals(input) || !"N".equals(input) ); //infinite loop

问题答案:

让我们用言语表达。

“只要不是苹果或者不是橙子,就吃掉所有这些水果。”

  • 草莓:不是苹果,继续。
  • 香蕉:不是苹果,继续。
  • 橙色:不是苹果,所以…继续。
  • 苹果:是苹果;但实际上不是橙色,所以…继续… :(

如果是苹果,那么“不是橙色”将是正确的;如果是橙色,则“不是苹果”为真;如果是猕猴桃,那两者都是对的。没有办法停止进食(除非您爆炸或昏迷)。

错误的逻辑导致人们死于果。

您想“只要不吃苹果,也不要吃橙子,就吃掉所有这些水果”。



 类似资料:
  • 问题内容: 我的Java应用程序在编译代码时遇到问题,它说它找不到符号 roomLength 。应用程序应该执行的操作是提示用户输入房间名称,然后如果该房间名称为“退出”,则必须关闭该程序。否则会提示输入房间的长度,宽度和高度。如果这些尺寸中的任何一个等于或小于零,它将再次提示输入尺寸。 这是我的主要方法。 提前致谢!;) 还有一个几乎与此问题类似的问题,只是它应该循环回到第一个提示,允许用户输入

  • 我正在编写一个 Java 程序。它应该打印出年终账户余额,今年投资,年度回报和年度数量。前任: 第一年-投资10000美元,投资额为10%,最终投资额为11000美元第二年-在现有11000美元的基础上再投资10000美元,现在你有21000美元,年回报率为2100美元,最终投资额为23100美元,持续投资6年。 我的代码打印了所有6年,但与第一年的值相同。循环有什么问题吗?非常感谢。这里我的代码

  • 问题内容: 我被困在我应该声明一个称为“ phrase”的字符串变量的部分,该变量不应一直循环播放。 让您知道我的任务是:与选项1相似,不同之处在于用户在输入第一队的结果后输入“ N”(而不是“ Q”)。然后,程序输入第二个团队名称及其结果,直到输入“ Q”。输出两个语句,例如选项1中的语句,然后输出第三条语句,该语句说明哪个团队处于第一位(基于点数) 输入样例: 样本输出: 更新 : 我的代码:

  • 本文向大家介绍MySQL循环语句之while循环测试,包括了MySQL循环语句之while循环测试的使用技巧和注意事项,需要的朋友参考一下 mysql 操作同样有循环语句操作,网上说有3中标准的循环方式: while 循环 、 loop 循环和repeat循环。还有一种非标准的循环: goto。 鉴于goto 语句的跳跃性会造成使用的的思维混乱,所以不建议使用。 这几个循环语句的格式如下: WHI

  • 我正在为Codewars做一个kata,它将两个数字数组相对放置。“对手”数组的平均数总是大于“codewarrior”数组,并且两个数组的长度总是相同的。我需要做的是找到获得胜利的最有效方法(codewarrior[x] 在上面,我将两个数组从最小到最大排序。然后,我有一个大的while循环来迭代“codefighter or”数组,以及两个time循环和一个if语句,每次迭代“对手”数组时,都

  • 我需要在while循环之前输入一个用户,这样它就会知道程序是否想继续。问题是while条件的更内部看不到扫描仪之前输入的一行。有什么建议吗?