2016-11-24 2 views
0

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

Я сделал что-то неправильно при объявлении переменной или может кто-нибудь объяснить, как исправить мою проблему? Вот мой код.

import java.util.Scanner; 

/** 
* 
* @author Home 
*/ 
public class NewClass1 { 
    public static void main(String[] args) { 

     int number; 

     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter your name: "); 
     String name = scan.nextLine(); 

     System.out.print("Please enter a number between 1 and 10: "); 
     number = scan.nextInt(); 

//asks for a number between one and ten until I get number within that range, 
     while (number < 1 || number > 10) { 
     System.out.print("No, between 1 and 10: "); 
     number = scan.nextInt(); 
    } 

    for (int i = 1; i <= number; i++) { 
     if (i % 3 == 0) { 
     System.out.print(name + " "); 
    } else { 
     System.out.print(i + " "); 
     } 
    } 
    System.out.println(); 
    for(int i =2; i<=number; i+=2) 
     System.out.print(i + " "); 
     System.out.print("are the even numbers."); 

     final int SENTINEL = -1; 
     int inputNumber; 
     int total = 0; 

     System.out.println(" Enter a number or -1 to finish. "); 
     inputNumber = scan.nextInt(); 

     while (inputNumber != SENTINEL) 
     { 
      total += number; 

      System.out.print("Enter the next number or '-1' to finish. "); 
      number = scan.nextInt(); 
     } 
     System.out.println("The total is " + total); 
    } 
     } 

ответ

0

Решение:

Вы получаете входной сигнал от пользователя и экономии, что вход в varible называется номер, но вы проверяете ваше время против inputNumber.

while (inputNumber != SENTINEL) 
    { 
     total += number; 
     System.out.print("Enter the next number or '-1' to finish. "); 
     inputNumber = scan.nextInt(); <<< not number should be inputNumber 
    } 
+0

Голосуйте, если это помогло спасибо –

+0

просят за голоса, как правило, приносит обратный эффект. Кроме того, OP не имеет достаточной репутации для голосования. – Pshemo

+0

@Pshemo спасибо за отзыв –

0
public class NewClass1 { 

    public static void main(String[] args) { 

     int number; 

     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter your name: "); 
     String name = scan.nextLine(); 

     System.out.print("Please enter a number between 1 and 10: "); 
     number = scan.nextInt(); 

//asks for a number between one and ten until I get number within that range, 
     while (number < 1 || number > 10) { 
      System.out.print("No, between 1 and 10: "); 
      number = scan.nextInt(); 
     } 

     for (int i = 1; i <= number; i++) { 
      if (i % 3 == 0) { 
       System.out.print(name + " "); 
      } else { 
       System.out.print(i + " "); 
      } 
     } 
     System.out.println(); 
     for (int i = 2; i <= number; i += 2) { 
      System.out.print(i + " "); 
     } 
     System.out.print("are the even numbers."); 

     final int SENTINEL = -1; 
     int inputNumber; 
     int total = 0; 


     do { 
      System.out.println(" Enter a number or -1 to finish. "); 
      inputNumber = scan.nextInt(); 
      if(inputNumber!= SENTINEL){ 
       total+=inputNumber; 
      } 
     } while (inputNumber != SENTINEL); 

     System.out.println("The total is " + total); 

    } 
} 
+0

Это должно помочь, ваша ошибка считывалась в переменную 'number', но делала сравнение в цикле while, используя 'inputNumber'. Надеюсь, это поможет. – zeddysoft

+0

Вы можете [изменить] ваши ответы - нет необходимости в комментариях. Но вы должны попытаться объяснить код в меньших разделах, чем просто предоставить полный код для копирования –

+0

@ cricket_007 за то, что указали это. – zeddysoft

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