При первом запуске все работает нормально, но если я введу действительное число от 1 до 10, которое меньше первого ввода, результат в основном останется прежним.

Входы, следующие за первым, работают правильно, только если они выше, чем предыдущие.

import java.util.Scanner;

public class Lab6_2{

  public static void main(String []args){

    //declarations

    Scanner input = new Scanner(System.in);

    char flagContinue;
    int userOneToTen;
    int factorialInteger = 1, counterA = 1;

    //process

    System.out.println("Do you want to start(Y/N):");

    flagContinue = input.next().charAt(0);

    while(flagContinue == 'y' || flagContinue == 'Y'){

      System.out.println("Enter an integer (1 - 10):");

      userOneToTen = input.nextInt();

      while(counterA <= userOneToTen){

          if(userOneToTen <= 0 || userOneToTen > 10){

            System.out.println("Invalid entry. Please enter an integer between 1-10");

            userOneToTen = input.nextInt();

          }//end if

          factorialInteger = factorialInteger * counterA;

          counterA ++;  

        }//end while

      System.out.println(userOneToTen + "!" + factorialInteger);  

      System.out.println("Do you want to start(Y/N):");

      flagContinue = input.next().charAt(0);

      }//end while

  }//end main

}//end class
0
Tommy Adams 4 Окт 2018 в 23:09

1 ответ

Лучший ответ

Вы должны установить counterA И factorialInteger обратно на единицу во внешнем пока цикл.

counterA = 1;
factorialInteger = 1


    }//end while
    counterA = 1;
    factorialInteger = 1;

  }//end main
1
The Scientific Method 4 Окт 2018 в 20:24