2014-01-18 6 views
0

Мне нужно написать программу Java, которая принимает входные данные из командной строки и сохраняет эти входы в массив. Цикл for должен проходить через входы и распечатывать их.Получение ввода из командной строки в Java

Мой код до сих пор:

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.

+5

Это потому, что вы напечатать «привет» внутри Ваша петля – kmera

+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(); 
} 

В вашем коде приветствие было напечатано для каждого аргумента, потому что оно было внутри ваш цикл.

1

Это потому, что вы добавляете Hello в println(). Удалите это, и вы хорошо пойдете.

Что происходит: на каждой итерации вы печатаете Hello, а затем i-й элемент массива args[]. Таким образом, вы получите повторил Hello сек

Напечатайте страницу 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

0

Пустое пространство между двумя словами рассматривается как разделитель для входных аргументов. Итак, Джон Доу рассматривается как 2 аргумента, и вы получаете свой результат.

Если вы намерены ввести только одно имя с промежутком между ними, например «John Doe», вам нужно будет изменить формат входных параметров, чтобы указать как таковой. Так держать свою программу так же, изменить вызов к этому:

Java HelloName «John Doe» «Адам Смит»

Ваш выход будет тогда

Hello John Doe 
Hello Adam Smith 
Смежные вопросы