2013-12-14 2 views
2

Я пытаюсь сделать ArrayList, который принимает несколько имен, которые вводит пользователь, до тех пор, пока не будет вставлено слово done, но я не уверен как. Как это сделать?Мне нужно сделать петлю, вводя пользователя, до ввода «done»

+0

Любой конкретный язык программирования вы используете? Во всяком случае, по крайней мере, отправьте какой-либо код вашей попытки, или этот вопрос будет закрыт в связи с отсутствием усилий. – nos

+0

его java извините забыл добавить – yoyo

+0

Ожидаете ли вы вставить «сделано» как часть списка? Какой код вы сделали, чтобы мотивировать решение этой проблемы? – Makoto

ответ

-2
ArrayList<String> names = new ArrayList<String>(); 
String userInput; 
Scanner scanner = new Scanner(System.in); 
while (true) { 
    userInput = scanner.next(); 
    if (userInput.equals("done")) { 
     break; 
    } else { 
     names.add(userInput); 
    } 
}  
scanner.close(); 
+0

Почему downvote? Оно работает. – zbr

+5

Поскольку использование прерывания, а не цикла, сложнее читать. while (! userInput.equals («done»)) имеет смысл при чтении кода –

+0

И немного хуже читаемость кода теперь является достаточной причиной для downvote здесь? – zbr

-1
String[] inputArray = new String[0]; 
do{ 
    String input=getinput();//replace with custom input code 
    newInputArray=new String[inputArray.length+1]; 
    for(int i=0; i<inputArray.length; i++){ 
    newInputArray[i]=inputArray[i]; 
    } 
    newInputArray[inputArray.length]=input 
    intputArray=newInputArray; 
}while(!input.equals("done")); 

непроверенный код, возьмите его с зерном соли.

+0

уверен, проголосуйте за людей, которые пытаются вам помочь. – Kent

+0

О, это был не он. Он еще не может понизить. – zbr

+0

oops, извините за вину, я тоже новичок :) – Kent

0

я бы, вероятно, сделать это, как это -

public static void main(String[] args) { 
    System.out.println("Please enter names seperated by newline, or done to stop"); 
    Scanner scanner = new Scanner(System.in);  // Use a Scanner. 
    List<String> al = new ArrayList<String>(); // The list of names (String(s)). 
    String word;         // The current line. 
    while (scanner.hasNextLine()) {    // make sure there is a line. 
    word = scanner.nextLine();     // get the line. 
    if (word != null) {       // make sure it isn't null. 
     word = word.trim();      // trim it. 
     if (word.equalsIgnoreCase("done")) {  // check for done. 
     break;         // End on "done". 
     } 
     al.add(word);        // Add the line to the list. 
    } else { 
     break;         // End on null. 
    } 
    } 
    System.out.println("The list contains - "); // Print the list. 
    for (String str : al) {      // line 
    System.out.println(str);     // by line. 
    } 
} 
1
ArrayList<String> list = new ArrayList<String>(); 
    String input = null; 
    while (!"done".equals(input)) { 
     // prompt the user to enter an input 
     System.out.print("Enter input: "); 

     // open up standard input 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 


     // read the input from the command-line; need to use try/catch with the 
     // readLine() method 
     try { 
      input = br.readLine(); 
     } catch (IOException ioe) { 
      System.out.println("IO error trying to read input!"); 
      System.exit(1); 
     } 
     if (!"done".equals(input) && !"".equals(input)) 
      list.add(input); 
    } 
    System.out.println("list = " + list); 
+0

Хотя правильно, input.equals («done») или использование переменной для удерживания break String обычно будет предпочтительным. Могу ли я также предложить преобразовать оба в верхний регистр, чтобы избежать проблем с чувствительностью к регистру? (Edit: На самом деле, я только что внес изменения ...) –

Смежные вопросы