我想在while循环中创建一种菜单。我写了这段代码
System.out.println("age , sex or exit" );
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String r = bufferRead.readLine();
while(!(r.equals("exit")))
{
if(r.equals("age"))
{
System.out.println("enter name");
r = bufferRead.readLine();
getAge(r);
System.out.println("age , sex or exit" );
r = bufferRead.readLine();
}
if(r.equals("sex"))
{
System.out.println("enter name");
r = bufferRead.readLine();
getSex(r);
System.out.println("age , sex or exit" );
r = bufferRead.readLine();
}
}
它第一次工作,但它无法正常工作。有没有更好的方法呢?
答案 0 :(得分:2)
您只需阅读一次该行。
尝试一下(双关语):
String r = null;
while((r = bufferRead.readLine()) != null) {
// the rest of your while loop
}
答案 1 :(得分:2)
在我看来,这是DO WHILE循环的理想情况。
BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
String r;
do {
System.out.println("age, sex or exit");
r = bufferRead.readLine();
switch(r){
case : age { getAge(r) }
case : sex { getSex(r) }
}
} while(!"exit".equals(r))
答案 2 :(得分:0)
如果我理解你的程序,问题是一旦你设置r并进入循环,它将永远不会让你再次设置它,所以它不能改变,你的循环保持输出。如果那是正确的,那么可能的解决方案是在循环中设置r,如下所示:
String r = "This will change";//Anything other than exit so the loop starts
while(!(r.equals("exit"))) {//Start loop
r = bufferRead.readLine();//Now set r
通过在程序循环中设置r(或继续运行)直到键入exit。