菜单在一个循环中

时间:2014-05-28 22:33:22

标签: java while-loop

我想在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();
  }
}

它第一次工作,但它无法正常工作。有没有更好的方法呢?

3 个答案:

答案 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。