如何通过一行从用户获得两个String输入?

时间:2017-02-23 12:37:48

标签: java user-input

这是我的代码到目前为止的样子。

public static void main(String[] args){

Scanner keyboard = new Scanner(System.in);

String name, age, job;

System.out.println("What is your name?");

name = keyboard.next();

System.out.println("How old are you?");

age = keyboard.next();

System.out.println("What do you do for a living?");

job = keyboard.next();

System.out.println("Your name is " + name + ". You are " + age + " year old. And you live as a " + job + ".");

}

如果可能的话,我想详细了解它,因为这是我真正想要学习的东西。

每次程序获得"工作"输入,只有空格之前的第一个单词存入"作业"变量

提前致谢。这是我的第一个帖子。希望我能成为这个令人敬畏的社区的一部分。 :)

3 个答案:

答案 0 :(得分:0)

您可以将给定的String与字符like so分开。除此之外,您可以使用GUI(但如果它的控制台,我能想到的最好的是Split)。

编辑:

当然,你输入像#" John Do"并由white space分隔成另外两个字符串。

答案 1 :(得分:0)

您正在使用Scanner.next()从用户检索数据。在没有任何其他配置的情况下,此方法将检索下一个标记,其中标记是由空格分隔的非空格字符序列 这就解释了为什么你只检索作业的第一个单词(这也会发生在其他信息中)。

如果您想要检索多个单词,则可以改为Scanner.nextLine() 请注意,您将无法输入三个数据并按Enter键,这是当前代码可能出现的行为。

答案 2 :(得分:0)

作业变量仅包含一个单词的原因是因为您使用 keyboard.next() 使用 作业= keyboard.nextLine();

因此作业变量将存储您输入的整行字符串。

我建议您对所有String类型的键盘输入使用nextLine()而不是next(),这样您就不会再遇到这个问题了