我想在我的程序中简单地阅读用户的输入。
import java.util.ArrayList;
import java.util.Scanner;
public class My_Counter {
public static void main (String[] args){
Scanner my_scan = new Scanner(System.in);
System.out.println("waiting for your number: \n");
int num2 = my_scan.nextInt();
System.out.println(num2);
}
}
然后我去运行 - »编辑配置 - »并在字段“程序参数”中添加一个数字。然后当我按下运行配置时,程序只返回:
waiting for your numbers:
我已经在网上查了一下,但我发现没有人像我一样有问题,似乎它必须像这样工作?或者我错过了什么?我在最新的Ubuntu版本上使用IDE。
答案 0 :(得分:2)
命令行参数在主方法的String[] args
数组中存储为 Strings 。
您没有访问该阵列,而是打开一个扫描程序,在运行时从控制台读取用户输入。此外,Scanner#nextInt
是阻止操作。这意味着该计划被暂停'直到来自基础InputStream
(在这种情况下为System.in
/ stdin)的输入。
简而言之:您没有访问过命令行参数,而是访问了用户输入。
尝试在&#34之后输入Integer.MIN_VALUE
和Integer.MAX_VALUE
之间的任何数字;等待您的号码"提示,它将回显输入的值。
要实现您的预期实施,您可以使用以下内容:
public static void main( String[] args )
{
System.out.println( Integer.parseInt( args[0] ) );
}
答案 1 :(得分:0)
如果您想从命令行参数中读取数字,例如,当您运行java -jar <my-class-compiled>.jar 15
或在IDE中(为了将数字15
传递给您的程序),您将不得不检索这样的数字:
public static void main(String[] args) {
String numberAsString = args[0]; // Will be "15"
try {
int number = Integer.parseInt(numberAsString);
} catch (Exception e) { // Manage a possible exception
System.out.println("The argument is not a valid Integer");
}
// Do your stuff...
}
另一方面,如果你想在执行时传递一个数字,比如提示,你将不得不使用Scanner.nextInt
,即:https://www.tutorialspoint.com/java/util/scanner_nextint.htm