Java - 将多个控制台输入字符串读入变量

时间:2015-10-21 19:47:25

标签: java input

我已经四处搜索,无法找到解决问题的方法。对于我的一门课程,我的任务是编写一个简单的控制台电子邮件系统。当提示用户输入消息体时,保存输入的字符串变量只接受一个单词,而不是整个消息。我读到我应该使用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()是如何为我搜索过的所有主题工作的,但不适合我。

3 个答案:

答案 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();