在intellij,java中没有读取命令行参数?

时间:2018-06-01 11:05:42

标签: java intellij-idea

我想在我的程序中简单地阅读用户的输入。

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。

2 个答案:

答案 0 :(得分:2)

命令行参数在主方法的String[] args数组中存储为 Strings

您没有访问该阵列,而是打开一个扫描程序,在运行时从控制台读取用户输入。此外,Scanner#nextInt阻止操作。这意味着该计划被暂停'直到来自基础InputStream(在这种情况下为System.in / stdin)的输入。

简而言之:您没有访问过命令行参数,而是访问了用户输入。

尝试在&#34之后输入Integer.MIN_VALUEInteger.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