如何纠正我的哨兵价值?

时间:2016-11-24 22:26:30

标签: java

我的代码应该要求一个名字,要求一到十之间的数字,将数字从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);
    }
       }

2 个答案:

答案 0 :(得分:0)

解决方案:

您从用户那里获得输入并将该输入保存在变量被叫号码中,但是您正在检查您的输入数字。

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

答案 1 :(得分: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);

    }
}