我已经四处搜索,无法找到解决问题的方法。对于我的一门课程,我的任务是编写一个简单的控制台电子邮件系统。当提示用户输入消息体时,保存输入的字符串变量只接受一个单词,而不是整个消息。我读到我应该使用readLine(),但是当程序提示用户输入消息体时,它会完全跳过该段的输入。为了解决这个问题,我读到在阅读该行之前我应该跳过(" \ n")。但是,现在用户按Enter键后程序不会结束。它只是不断地接受输入并且不让我做任何事情。
以下是一些有用的代码:
Scanner in = new Scanner(System.in);
//Declare variables
String subject, reciepent, message = "";
//Get subject
System.out.println("> Enter subject: ");
subject = in.next();
//Get reciepent
System.out.println("> Enter reciepent: ");
reciepent = in.next();
//Get message
System.out.println("> Enter message: ");
in.skip("\n");
message = in.nextLine();
//Print out message to verify user input
System.out.println("> " + message);
我不明白nextLine()是如何为我搜索过的所有主题工作的,但不适合我。
答案 0 :(得分:0)
尝试使用等待用户输入的nextLine()
,然后返回输入。你的代码应该是这样的:
Scanner in = new Scanner(System.in);
//Declare variables
String subject, recipient, message;
//Get subject
System.out.println("> Enter subject: ");
subject = in.nextLine();
//Get recipient
System.out.println("> Enter reciepent: ");
recipient = in.nextLine();
//Get message
System.out.println("> Enter message: ");
message = in.nextLine();
//Print out message to verify user input
System.out.println("> " + message);
答案 1 :(得分:0)
怎么样
Scanner s = new Scanner(System.in);
String line = "";
while((line = s.nextLine()) != null) {
System.out.println("> Enter subject: ");
subject = in.nextLine();
//Get recipient
System.out.println("> Enter reciepent: ");
recipient = in.nextLine();
//Get message
System.out.println("> Enter message: ");
message = in.nextLine();
//Print out message to verify user input
System.out.println("> " + message);
}
答案 2 :(得分:0)
此问题的解决方案不是使用.skip()
方法,而是使用.nextLine()
代替,这会删除跟踪' \ n'根据需要输入流中的字符。
因此,将行in.skip("\n");
更改为in.nextLine();