0

简单解释一下,我应该让用户输入消息收件人的姓名,然后让他们输入消息正文,正文可以有多行。如果他们输入一个空行,则消息正文结束,他们可以在切换中选择另一种情况。

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 循环被完全跳过了。我尝试过更改recipmenuScan.nextLine(),和mbody,但唯一发生的另一件事是消息正文永远存在。menuScan.next().nextLine()

我也尝试过对 and 使用两个不同的 Scanner 对象recipmbody但也没有运气。

4

2 回答 2

2

您应该将您next的替换为nextLine. next,如文档所述,如果它与从指定 string 构造的模式匹配,则返回下一个标记,这不是您想要的。

尝试以下操作:

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.");
于 2016-03-20T19:51:47.700 回答
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

于 2016-03-20T19:49:31.217 回答