2014-11-16 6 views
1

Проблема, с которой я столкнулась, заключается в том, что когда имеется четное количество входных данных до того, как набирается часовое, оно выводит только четные строки (например: да, нет, -1 будет печатать нет) и когда является нечетным количеством ввода, программа продолжает работать, даже несмотря на то, что контролер был использован.String ArrayList и вывод

//takes words (strings) from the user at the command line 
//returns the words as an ArrayList of strings. 
//Use a sentinel to allow user to tell the method when they are done entering words. 

public static ArrayList<String> arrayListFiller(){ 
    ArrayList<String> stringArrayList = new ArrayList(); 
    System.out.println("Enter the Strings you would like to add to the Array List."); 
    System.out.println("Type -1 when finished."); 
    Scanner in = new Scanner(System.in); 
    while(!in.nextLine().equals("-1")){ 
     String tempString = in.nextLine(); 
     stringArrayList.add(tempString); 
    }  
    return stringArrayList; 
} 

public static void printArrayListFiller(ArrayList<String> stringArrayList){ 
    for(int i = 0; i < stringArrayList.size(); i++){ 
     String value = stringArrayList.get(i); 
     System.out.println(value); 
    } 
} 

ответ

1

Проблема, которая, как я думаю, у вас есть, заключается в том, что вы вызываете nextLine слишком много раз. Если вы посмотрите на эти строки кода,

while(!in.nextLine().equals("-1")){ 
     String tempString = in.nextLine(); 
     stringArrayList.add(tempString); 
    }  

Скажите, что я хочу ввести «Боб», а затем -1 для выхода. То, что вы делаете, читается в «Боб», чтобы проверить, что это не дозорный, но затем вы читаете в дозорном аппарате и добавляете его в коллекцию (даже проверяя, что это значение дозорного устройства)

Мое решение состоит в том, чтобы просто вызвать метод nextLine один раз и протестировать его по мере его получения, а затем обработать его. Чтобы сделать это, вы должны иметь локальную переменную вне цикла в то время как и назначить его nextLine(), то есть

String temp 
while(!(temp=in.nextLine()).equals("-1")) { 
     .add(temp) 
} 

Таким образом, вы можете протестировать линию, которую вы сейчас читаете в это не значение сторожевого и у вас есть способ добавить его в коллекцию. Надеюсь, что поможет

+1

ха-ха-ха-ха-ха-ха-ха, вы тоже можете поднять вверх? Цените любовь. Мне нужны некоторые моменты, чтобы убрать меня с вопроса. – committedandroider

+1

Я позабочусь о вашем решении, как только смогу. Я довольно новичок в этом сайте, поэтому мне не разрешено продвигаться, пока я не получу репутацию 15. Еще раз спасибо за помощь. – Evan

+1

Спасибо !!!!!! – committedandroider

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