【问题标题】:Validation using a while loop [duplicate]使用while循环进行验证[重复]
【发布时间】:2018-04-08 01:08:59
【问题描述】:

大家好,我只需要快速解决如何验证这个问题。不幸的是,我正在使用的书在尝试该程序后似乎没有提供解决方案。问题来了。

"编写一个输入验证程序,要求用户输入'Y'、'y'、'N'或'n'"

请记住,它只能使用 while 循环来完成,任何帮助都将不胜感激。

while(answer != "y" || answer!= "n" )
    {
        System.out.println("Please use a  Y or N");
            answer = keyboard.nextLine();
    }

这是我当前的循环,但即使我在其中输入 y 或 n,它似乎也不起作用。

无论我输入的字母是否正确,我一直得到的当前输出是“请使用 Y 或 N”

【问题讨论】:

  • 也可以考虑使用 equalsIgnoreCase 而不是 equals ,它将为您管理区分大小写。
  • 除了字符串比较之外,您还应该将“或”比较||替换为“与”比较&&
  • 并考虑将条件更改为 && 而不是 ||,它并没有按照您的想法进行
  • 你们都错了。他在问一些完全不同的事情——他想知道如何制作这样的循环。
  • 感谢您的反馈,但是是的,我想问是否有人能够帮助我更正我的代码。我不能使用equalsIgnoreCase,因为本章没有。它只是使用while循环来做一个简单的验证。很遗憾,我不能使用任何其他工具。

标签: java validation loops while-loop


【解决方案1】:

这几乎需要一个do-while循环:

do {
    answer = keyboard.nextLine();
    System.out.println("Please use a  Y or N");
} while(!answer.equals("y") && !answer.equals("n"))

除了一个问题,这无论如何都会向您显示警告。使用while,有两种选择:

answer = keyboard.nextLine();
while(!answer.equals("y") && !answer.equals("n")) {
    System.out.println("Please use a  Y or N");
    answer = keyboard.nextLine();
} 

或者,“带中断的无限循环”方法,可以避免重复,但引入了“goto”:

while(true) {
    answer = keyboard.nextLine();
    if (answer.equals("y") || answer.equals("n")) {
        break;
    }
    System.out.println("Please use a  Y or N");
} 

使用== 进行比较是一场灾难——永远不要将它与String 一起使用,始终使用equals。否则,您将比较参考而不是值。

我几乎忘记了大写字母:您可以将 equals 替换为 equalsIgnoreCase,如 cmets 中所述。但是,如果您因为愚蠢的要求而无法使用它,只需与"Y""N" 进行比较即可。

【讨论】:

  • 我非常感谢这个答案,我已经将代码的第一段作为我需要做的所有事情。明天我将告诉我的讲师,我必须使用 !.answer.equals("Y") 部分,因为使用 == 比较字符串很麻烦。非常感谢大家的帮助:)
  • 如果你的老师真的让你用==来比较String或任何对象的值,那么他应该先学习再教。这在 Java 中是一个很大的 NOPE。
猜你喜欢
  • 2013-09-25
  • 2015-07-07
  • 2012-12-07
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
相关资源
最近更新 更多