2015-03-18 2 views
2

Могу ли я спросить, какие предлагаемые решения этой проблемы? Когда пользователь вводит -1, это будет включено в общую сумму, чего мы не хотим. Я пытаюсь сделать это без использования структуры управления , если.Выход из цикла с цифровым вводом от пользователя

int numberToAdd = 0, total = 0; 
    Scanner input = new Scanner(System.in); 

    while (numberToAdd != -1) { 
     System.out.println("Number to add? -1 to quit"); 
     numberToAdd = input.nextInt(); 
     total = total + numberToAdd; 
    } 
    System.out.println("Total: = " + total); 

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

Благодаря

ответ

3

Вы можете добиться того, что вы хотите без если заявление, если вы читали первый вход до начала цикла:

System.out.println("Number to add? -1 to quit"); 
numberToAdd = input.nextInt(); 
while (numberToAdd != -1) { 
    total = total + numberToAdd; 
    System.out.println("Number to add? -1 to quit"); 
    numberToAdd = input.nextInt(); 
} 

Вот способ сделать код короче:

System.out.println("Number to add? -1 to quit"); 
while ((numberToAdd = input.nextInt()) != -1) { 
    total = total + numberToAdd; 
    System.out.println("Number to add? -1 to quit"); 
} 
+0

Это правильно, спасибо. – 151SoBad

+0

Выполняет ли это (чтение ввода непосредственно перед циклом) ко всем контролируемым контурам, которые требуют ввода от пользователя? – 151SoBad

+0

@ 151SoBad Я не уверен, что вы подразумеваете под «всеми путями, контролируемыми контролером» – Eran

0

Вы также можете использовать цикл do...while, чтобы решить вашу проблему.

int numberToAdd = 0, total = 0; 
    Scanner input = new Scanner(System.in); 
    System.out.println("Number to add? -1 to quit"); 

    do{ 
     total = total + numberToAdd; 
     System.out.println("Number to add? -1 to quit"); 
     numberToAdd = input.nextInt(); 
    }while(numberToAdd != -1) 
0

Использование петли делать-то время:

int numberToAdd = 0, total = 0; 
Scanner input = new Scanner(System.in); 

do { 
    total += numberToAdd; 
    System.out.println("Number to add? -1 to quit");    
    numberToAdd = input.nextInt(); 
} while (numberToAdd != -1); 

System.out.println("Total: = " + total); 
Смежные вопросы