2014-09-12 76 views
1

我想知道如何通过终端只使用一个命令行输入两个值。 因此,用户不用写“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在同一行?

回答

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

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

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

另一种方法是使用main的参数变量。

java -jar thisjar.jar 5 2 

5和2将被存储到字符串[]:当用户使用下面的命令运行程序(我将假设它是一个JAR文件)

static void main (String[] args) 

。 (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]); 
0

我会做到这一点的方式是在X和Y读入一个字符串名为XY和我再拆他们成这样的阵列。

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" 
0

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

相关问题