Java 为什么我的JOptionPane会从下面的代码中重复提示主要工作表状态
我有一个无限的while循环问题,无论我输入什么,即使它是“归档”或“不完整”,循环都会不断地重新提示,我不知道为什么Java 为什么我的JOptionPane会从下面的代码中重复提示主要工作表状态,java,joptionpane,Java,Joptionpane,我有一个无限的while循环问题,无论我输入什么,即使它是“归档”或“不完整”,循环都会不断地重新提示,我不知道为什么 strMajorSheet = JOptionPane.showInputDialog(null,"What is the advisee's major sheet status? (Filed/Incomplete)", "Advisee's Major Sheet",3); if(strMajorSheet == "Filed" || s
strMajorSheet = JOptionPane.showInputDialog(null,"What is the advisee's major sheet status? (Filed/Incomplete)",
"Advisee's Major Sheet",3);
if(strMajorSheet == "Filed" || strMajorSheet == "Incomplete")
{
switch(strMajorSheet)
{
case "Filed":
blnMajorSheet = true;
case "Incomplete":
blnMajorSheet = false;
}
}
else
{
while(strMajorSheet != "Filed" && strMajorSheet != "Incomplete")
{
strMajorSheet = JOptionPane.showInputDialog(null,"What is the advisee's major sheet status? (Filed/Incomplete)",
"Advisee's Major Sheet",3);
}
字符串比较Java必须使用
equals
和equalsIgnoreCase
来完成。请不要使用=
来比较字符串
换成
if(strMajorSheet.equals("Filed") || strMajorSheet.equals("Incomplete"))
......
while(!strMajorSheet.equals("Filed") && !strMajorSheet.equals("Incomplete"))
......
首先,
String
比较不是使用=
完成的,它比较对象引用,对象引用不太可能是真的
。相反,您需要使用equals
或equalsIgnoreCase
来比较两个字符串的内容
话虽如此,我不知道您为什么要费心使用if
语句,因为整个逻辑都可以使用switch
语句来实现,例如
boolean gotInput = true;
do {
String strMajorSheet = JOptionPane.showInputDialog(null, "What is the advisee's major sheet status? (Filed/Incomplete)",
"Advisee's Major Sheet", 3);
gotInput = true;
switch (strMajorSheet) {
case "Filed":
blnMajorSheet = true;
break;
case "Incomplete":
blnMajorSheet = false;
break;
default:
gotInput = false;
}
} while (!gotInput);
现在,请注意,switch(String)
与使用String#equals
相同,这是区分大小写的比较。为什么使用if
语句和case
语句?你可以用案例
语句来完成整件事……哦,天哪,我完全搞错了。说到编程,我还是个初学者,非常感谢。