2013-09-23 2 views
0

Я пытаюсь понять, как собирать пользовательский ввод и цикл до условий. Я хочу зацикливать сканер до тех пор, пока пользовательские входы 0, однако мне нужно, чтобы каждое введенное целое число сохранялось, чтобы к нему можно было получить доступ для последующего использования. Жесткая часть - я не могу использовать массив.Непрерывный сбор данных до тех пор, пока условия не будут выполнены?

+0

Какой язык вы используете? – Stijn

+0

Это на Java? Также, если вы не можете использовать массив ... что вы можете использовать? –

+0

Да, это Java sorry – Ryan

ответ

0

просто вы можете сделать что-то вроде

List mylist = new ArrayList(); //in java. other wise you can create array[size] 
int input = 1; 
while(input!=0) 
{ 
    /* input number from user here */ 

    if(input!=0) 
    mylist.add(input); 

} 
0

Вот простой способ пользовательского ввода петли до 0 не вводится.

Scanner console = new Scanner(System.in); 
boolean loop = true; 
String input; 
while(loop) { 
    input = console.nextLine(); 
    //Add input to a data structure 
    if (input.equals("0")) { 
     loop = false; 
    } 
} 

Что касается добавления пользователя к структуре данных, вы сказали, что не можете использовать массив. Как насчет List или Set. Даже работала бы Stack или Queue. Вы рассматривали использование какой-либо из этих структур данных?

Вот простой пример с использованием списка:

List<String> aList = new ArrayList<String>(); 
aList.add(input); 

И это, как вы могли бы использовать Stack:

Stack<String> stk = new Stack<String>(); 
stk.push(input); 

Пожалуй, наиболее эффективным способом было бы использовать HashSet:

Set<String> set = new HashSet<String>(); 
set.add(input); 
0

Использование массивов здесь было бы немного сложно, так как вы не знаете, какое количество элементов пользователь собирается en тер. Вы всегда можете написать код для создания нового массива с большей емкостью, как только пользователь извлечет первоначальную емкость и скопирует существующие элементы ввода, но использование List будет намного проще.

Scanner scanner = new Scanner(System.in); 

    List<Integer> input = new ArrayList<>(); 
    int nextInt = Integer.MIN_VALUE; 
    while((nextInt = scanner.nextInt()) != 0){ 
     input.add(nextInt); 
    } 

См. Этот вопрос, если вы действительно хотите использовать массивы. Ответ объясняет создание новых массивов и копирование элементов. Java dynamic array sizes?

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