Факториал положительного целого числа от 1 до 10.Проблема: работает, только если действительный ввод больше, чем предыдущий - PullRequest
0 голосов
/ 04 октября 2018

Все отлично работает при первом запуске, но если я введу действительное число от 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

1 Ответ

0 голосов
/ 04 октября 2018

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

counterA = 1;
factorialInteger = 1


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

  }//end main
...