Java:将Scanner输入分配给多个变量?

时间:2015-08-08 02:18:46

标签: java java.util.scanner

我正在为练习做旧的代码强制问题,我在Python中经常重复的模式是:

(m, n, k) = [int(i) for i in raw_input().split()]

快速分配m, n, k,因为

等输入
4 2 7

在代码中常见为第一个输入行。有什么方法可以用Java快速完成这种事情(有多个变量m, n, k)(最好是1-2个班轮)?

任何帮助表示赞赏(或链接到回答q的某个地方)。谢谢!

2 个答案:

答案 0 :(得分:1)

我能想到的最快捷方式就是这样:

    System.out.println("Enter values:");
    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    int j = scan.nextInt();
    int k = scan.nextInt();
    System.out.print(i + " " + j + " " + k);

输入:1 2 3

输出:1 2 3

答案 1 :(得分:1)

这可能不是您想要的,IMO,如果您将输入存储在数组中,它是一个非常接近的替代品。每个说法没有三个“单独”的变量,但是你要求的却是1 - 2个。

public static void main(String[] args) throws Exception {
    Scanner input = new Scanner(System.in);
    System.out.print("Enter 3 values separated by spaces: ");
    int[] mnk = Arrays.stream(input.nextLine().split(" "))
            .mapToInt(a -> Integer.parseInt(a)).toArray();
    System.out.println(Arrays.toString(mnk));
}

这种方法的另一个“缺点”是输入对于输入和用空格分隔的整数是SO限制性的。你无法通过错误检查获得1 - 2班轮。

结果:

Enter 3 values separated by spaces: 4 2 7
[4, 2, 7]