用扫描仪在一行中读取多个变量

时间:2017-12-03 09:15:20

标签: java

我试图从控制台读取多个变量,扫描仪只在一行中(用空格分隔)。

如果我输入:

int hight = Integer.parseInt(reader.nextLine());
int width = Integer.parseInt(reader.nextLine());
int depth = Integer.parseInt(reader.nextLine());

然后它会显示我的数字(例如1,2,3):

1
2
3

但我希望它显示我的数字:1 2 3

有人可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

一种方法是使用nextInt代替nextLine

int hight = reader.nextInt();
int width = reader.nextInt();
int depth = reader.nextInt();

您的输入可以是这样的:

1 2 3

请注意,您必须在按 ENTER 之前输入所有三个数字,否则您的输入将再次显示如下:

1
2
3

另一种方法是使用正则表达式指定输入所需的确切格式,调用nextLine,并将用户输入的行与正则表达式模式匹配:

Matcher matcher = Pattern.compile("(\\d+)\\s+(\\d+)\\s+(\\d+)").matcher(reader.nextLine());
if (matcher.matches()) {
    int height = Integer.parseInt(matcher.group(1));
    int width = Integer.parseInt(matcher.group(2));
    int depth = Integer.parseInt(matcher.group(3));
} else {
    // input was invalid!
}

答案 1 :(得分:0)

要在一行中输入所有3个值,您可以使用。 . readInt()三次而不是.readNextLine()。通过这种方式,您可以像1 2 3一样输入输入,然后在键盘上按Enter(默认情况下用于结束输入)后,您就会得到所要求的内容。

如果您打算在一行而不是多行一行中获得输出,则应该使用其他版本的方法打印到控制台:

System.out.print(height + " " + weight +  " " + depth)

System.out.println()在参数System.out.print()之后打印下一行字符。

答案 2 :(得分:0)

根据您的评论,您可以简单地将数字读取为整数,如:

Scanner br =new Scanner(System.in);
    int a=br.nextInt();
    int b=br.nextInt();
    int c=br.nextInt();

输入为1 2 3。

答案 3 :(得分:0)

用于以空格分隔的单行输入。您可以使用Java中的Scanner和BufferReader做到这一点。 1.扫描器类

Scanner sc = new Scanner(System.in);
int[] integers;
String input = sc.nextLine();
String[] strs= input().split(" ");
for(int i=0;i<strs.length;i++){
  integers[i]=Integer.parseInt(strs[i]);
}

2。 BufferReader类

BufferReader br = new BufferReader(new InputStreamReader(System.in));
int[] integers;
String input = br.readLine();
String[] strs= input().trim().split("\\s+");
for(int i=0;i<strs.length;i++){
  integers[i]=Integer.parseInt(strs[i]);
}