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

Java-将多个控制台输入字符串读入变量,java,input,Java,Input,我到处寻找,找不到解决我问题的办法。在我的一门课程中,我的任务是编写一个简单的控制台电子邮件系统。当提示用户输入消息正文时,保存输入的字符串变量只接受一个单词,而不是整个消息。我读到应该使用readLine(),但当程序提示用户输入消息正文时,它会完全跳过该段的输入。为了解决这个问题,我读到在读这行之前应该放一个跳转(“\n”)。然而,现在用户按下Enter键后,程序不会结束。它只是不断地输入信息,不让我做任何事情 下面是一些代码以帮助您: Scanner in = ne

我到处寻找,找不到解决我问题的办法。在我的一门课程中,我的任务是编写一个简单的控制台电子邮件系统。当提示用户输入消息正文时,保存输入的字符串变量只接受一个单词,而不是整个消息。我读到应该使用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()如何适用于我搜索的所有线程,但对我来说不是。

尝试使用
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);
怎么样

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);

}

此问题的解决方案不是使用
.skip()
方法,而是使用
.nextLine()
方法,这将根据需要从输入流中删除尾随的“\n”字符


因此更改行:
in.skip(“\n”)
到.nextLine()中的

所以就在
recipent=in.next()之后在.nextLine()中放置一个
并查看这是否有帮助。另外,我很确定你可以去掉.skip(“\n”)中的
除非有原因。这是因为
next()
不使用换行符,请参阅: