在Java中从命令行接收输入

时间:2014-01-18 17:41:52

标签: java arrays for-loop command-line

我需要编写一个接受命令行输入的Java程序,并将这些输入存储到数组中。 for循环应该通过输入并打印出来。

到目前为止我的代码是:

public class HelloName{    
    public static void main(String args []){    
       for( int i = 0; i < args.length ; i++) {    
              System.out.print("Hello " + args[i]);               
       }
}

我遇到的问题是,当输入多个输入时,它会显示“Hello”两次。

例如,写java HelloName John Doe,会给我:

Hello John Hello Doe

我只想知道如何将这些名字与Hello John Doe结合起来。

3 个答案:

答案 0 :(得分:3)

试试这个:

public static void main(String args []){
    System.out.print("Hello ");
    for( int i = 0; i < args.length ; i++) {
        System.out.print(args[i] + " ");
    }
    System.out.println();
}

在你的代码中,为每个参数打印了hello,因为它在你的循环中。

答案 1 :(得分:1)

这是因为您要在Hello中附加println()。删除它,你很高兴。

正在发生的事情是:对于每次迭代,您要打印Hello,然后打印i数组的args[]元素。因此,您会重复Hello s

在您进入循环之前打印Hello,然后遍历args[]

public class HelloName{

    public static void main(String args []){
       System.out.println("Hello ");
       for( int i = 0; i < args.length ; i++) {

              System.out.print(args[i] + " "); // see the difference ?

       }
    }  

您可以在此处在IDEOne上运行更正的程序:http://ideone.com/oriBtP

答案 2 :(得分:0)

两个单词之间的空格被视为输入参数的分隔符。因此John Doe被视为2个参数,您可以获得输出。

如果您打算只输入一个名称,中间有空格,例如“John Doe”,则需要更改输入参数格式以表示。因此,保持程序相同,将调用更改为:

java HelloName“John Doe”“Adam Smith”

您的输出将是

Hello John Doe
Hello Adam Smith