java循环在第一次输出时卡住
全面检修:我修改了整个来源并找到了解决方案;这个问题不再适用 以下是循环:java循环在第一次输出时卡住,java,loops,Java,Loops,全面检修:我修改了整个来源并找到了解决方案;这个问题不再适用 以下是循环: for(String x : options){ while(!(x.equals(input))){ pl("\t Please enter a valid option!"); input = TextIO.getlnWord().toUpperCase(); } } 场景:
for(String x : options){
while(!(x.equals(input))){
pl("\t Please enter a valid option!");
input = TextIO.getlnWord().toUpperCase();
}
}
场景:我有一个名为options
的字符串数组,其中充满了值。我想验证用户是否从选项中输入了有效字符串。如果是的话,继续前进
问题:未验证,循环继续运行
我是否需要创建/重写
contains()
方法,然后使用该方法的验证继续?如果有人能解释这个问题,并以最好或最受欢迎的方式提供意见,请随意。在If/else语句中,其中一个块总是会运行
if(input.equals(null)){
pl("\t Please enter an option!");
} else {
pl("\t Please enter a valid option!");
}
这意味着当你有这个if语句时,当它不运行if语句时,它总是运行一个else块。如果不希望If语句像这样运行,则应在以下情况下将else替换为else:
if(input.equals(null)){
pl("\t Please enter an option!");
} else if (/* Validation logic goes here */) {
pl("\t Please enter a valid option!");
}
编辑:等等,问题中的代码是刚刚编辑的还是我疯了?input.equals(null)如果输入为null,您将永远不会输入,如果输入,它将抛出null指针。因此,通过调用input=TextIO.getlnWord().toUpperCase(),输入不能变为null;因为您在尝试执行时得到了空指针。toUpperCase();我认为TextIO涵盖了这个例外;我只是再试了一次,它没有输出
if
语句。我也必须处理这个问题。关于如何处理此验证的任何其他注释?什么是TextIO.getlnWord()
,什么是input
初始化为(在循环之前)?典型的选项解析将迭代输入,对照已知选项进行检查,并设置选项值。例如,您可以使用带有选项的哈希表作为键,并通过查看HashTable.values()
,检查它们是否都已设置。我建议您重新考虑尝试执行的操作。。。while语句看起来也很奇怪,TextIO.getlnWord()将在您的while。。。怀疑它。。。删除,同时也请更新问题的文本。我删除了input.equals(null)
异常,请检查编辑。但是@Xyexs我尝试了这个,并且验证了它。我不敢相信我忽略了关于if/else
sb的简单事实,但现在我必须找到另一种解决方法