我不知道为什么,但每当我在我的do while循环中选择完成时,它都不会终止。
public class testClinic{
public static void main(String[]args){
Clinic c=new Clinic();
do{
c.details(JOptionPane.showInputDialog("[P]roceed","\n[D]one"));
}while(!c.details().equals("D"));
}
}
答案 0 :(得分:1)
我会尝试回答您的问题,但您确实没有为我提供足够的代码详情,以确保我的回答能为您提供帮助。
我最好的猜测是你的Clinic
课程看起来像这样:
public class Clinic {
public String details;
public void details(String input) {
details = input;
}
}
我注意到的第一件事是,您对JOptionPane.showInputDialog
的呼叫似乎没有按照您的意愿行事。同样,我只是根据提供的信息来猜测你想要什么。我想你想要一个对话框,要求用户输入两个输入中的一个 - P为" Proceed"或D代表"完成"。如果您查看JoptionPane
的Javadoc,您会看到您的代码正在调用this method,这会导致您的对话框显示如下:
现在,如果您只需单击“确定”进入此对话框,并且您的Clinic
类与我上面显示的类相似,那么details
字段将设置为" [d]一个"显然,这不等于" D"因此你的循环永远不会结束。
如果您将调用details
方法的行更改为:
c.details(JOptionPane.showInputDialog("[P]roceed\n[D]one","D"));
你会得到你想要的 - 提示将如下所示:
当你按下OK时,循环将结束。
有关您的代码需要考虑的一些事项:
JOptionPane.showInputDialog
的调用将返回用户输入的文本。如果用户按下取消,当循环尝试访问c.details时,您将收到java.lang.NullPointerException(同样,假设Clinic
按上述方式工作)equals
比较,以避免出现NullPointerException的任何可能性。例如,在您的代码中:}while(!c.details.equals("D"));
将更改为}while(!"D".equals(c.details));