如何在单个命令行中输入两个值?

时间:2014-09-12 16:23:08

标签: java input terminal

我想知道如何只使用一个命令行通过终端输入两个值。 因此,用户不是写“5 {ENTER} 2 {ENTER}”,而是接受“5 2 {ENTER}”或“5,2 {ENTER}”。

基本上,如何做到这一点:

System.out.println("Enter x value");
int x = inputScanner.nextInt();

System.out.println("Enter y value");
int y = inputScanner.nextInt();

改为让用户在一行上同时输入x和y的东西?

4 个答案:

答案 0 :(得分:2)

您可以将其添加到main()方法中:

public static void main(String[] args){
    int x = Integer.parseInt(args[0]);
    int y = Integer.parseInt(args[1]);

    //do something with x and y
}

当您从命令行运行它时:

java your_class_name 5 2;

现在x = 5y = 2

但我想你可能想读一行输入的用户输入。 然后你可以这样做:

System.out.println("Enter x and y");
int x = inputScanner.nextInt();
int y = inputScanner.nextInt();

请注意,这仅在用户以5 2形式输入输入时才有效,即两者之间有空格。如果您想在其间使用逗号,即5,2,则必须更改Scanner的分隔符:

System.out.println("Enter x and y");

inputScanner.useDelimiter(",");

int x = inputScanner.nextInt();
int y = inputScanner.nextInt();

答案 1 :(得分:1)

另一种方法是使用main的arguments变量。 (我将假设它是一个jar文件)

static void main (String[] args)

当用户使用以下命令运行程序时:

java -jar thisjar.jar 5 2 

5和2将存储在String []中。 (arg [0] = 5)(arg [1] = 2)。从那里你可以做到:

int x = Integer.parseInt(arg[0]); //You have to parse the integer because it was stored as a string
int y = Integer.parseInt(arg[1]);

答案 2 :(得分:0)

我实现这一目标的方法是将x和y读入名为xy的String中,然后我将它们拆分成这样的数组。

System.out.println("Enter x and y values: ");
input = new Scanner(System.in); // Type the input like "x, y" (5, 5)
String xy = input.nextLine(); // Reads the x and y value as a string
String[] str = xy.split(","); // Takes the comma out and puts both values in the array
System.out.println("x: " + str[0] + ", y: " + str[1]); // the out looks like "x: 5, y: 5"

答案 3 :(得分:0)

命令行参数答案是最简单的方法,但如果您想在提示用户输入之前对程序执行其他操作,则您需要转到另一条路线。我接近这个的方法是将输入扫描为字符串,告诉用户用逗号分隔x和y值。然后,您可以处理输入,将它在逗号分隔为x和y字符串并检查以确保x和y是整数(或浮点数),将它们转换为所需类型,或者如果输入输入错误则引发错误。无论程序使用它们,您都可以得到两点。我在Python中使用这种方法来获得去年在我的代数课程中使用的作业解算器。这个代码非常简单,所以我会让你照顾那个部分。

相关问题