(Java)退出循环切换情况下空行

时间:2016-03-20 19:28:50

标签: java while-loop switch-statement blank-line

简要说明一下,我应该让用户输入该名称 收件人的邮件,然后让他们进入邮件正文,这可以 有多条线。如果他们输入一个空行,则消息正文结束 他们可以在交换机中选择另一个案例。

case 'S':
case 's':
    if(user.equals(" ")) {
        System.out.println("No user logged in.");
    } else {
        System.out.println("Recipient: ");
        recip = menuScan.next();

        m = new Message(user,recip);

        System.out.println("Enter message. Blank line to quit.");
        mbody = menuScan.nextLine();

        while(!mbody.equals("")) {
            mbody = menuScan.next();
            m.append(mbody);
        }

        ms.deliver(m);

        System.out.println("Messgae sent.");

    }
    break;

但是就像现在一样,完全跳过了while循环。我尝试将recip更改为menuScan.nextLine(),将mbody更改为menuScan.next().nextLine(),但唯一发生的事情是邮件正在继续。

我也尝试为recipmbody使用两个不同的扫描仪对象,但也没有运气。

2 个答案:

答案 0 :(得分:2)

您应该将next替换为nextLinenext,正如文档所述,如果匹配从指定字符串构建的模式将返回下一个标记,这不是您想要的。

尝试以下方法:

System.out.println("Recipient: ");
recip = menuScan.nextLine();

m = new Message(user,recip);

System.out.println("Enter message. Blank line to quit.");
mbody = menuScan.nextLine();

while(!mbody.equals("")) {
    m.append(mbody);
    mbody = menuScan.nextLine();
}

ms.deliver(m);

System.out.println("Messgae sent.");

答案 1 :(得分:0)

我已尝试过这段代码

      System.out.println("Enter message. Blank line to quit.");
      mbody = menuScan.nextLine();

      while (!mbody.equals("")) {
           mbody = menuScan.next();
           m.append(mbody);
      }

稍微改变一下

      System.out.println("Enter message. Blank line to quit.");
      mbody = menuScan.nextLine();

      while (!mbody.equals("")) {
           m.append(mbody);
           mbody = menuScan.nextLine();          
      }

这样循环就会按预期执行和退出。 我使用过java.util.Scanner