Java 1-10之间的正整数的阶乘。问题:仅当有效输入大于以前的输入时有效

Java 1-10之间的正整数的阶乘。问题:仅当有效输入大于以前的输入时有效,java,validation,input,while-loop,factorial,Java,Validation,Input,While Loop,Factorial,第一次运行时一切正常,但如果我输入的有效数字介于1和10之间,低于第一次输入,则输出基本保持不变 第一个输入之后的输入只有在高于先前输入时才能正常工作 import java.util.Scanner; public class Lab6_2{ public static void main(String []args){ //declarations Scanner input = new Scanner(System.in); char flagCont

第一次运行时一切正常,但如果我输入的有效数字介于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
import java.util.Scanner;
公共级Lab6_2{
公共静态void main(字符串[]args){
//声明
扫描仪输入=新扫描仪(System.in);
继续;
int-useronetone;
整数阶乘整数=1,计数器A=1;
//过程
System.out.println(“是否要启动(Y/N):”;
flagContinue=input.next().charAt(0);
while(flagContinue=='y'| | flagContinue=='y'){
System.out.println(“输入一个整数(1-10):”;
userOneToTen=input.nextInt();

而(counterA您必须在外部将
counterA
factorialInteger
设置回一 while循环

counterA = 1;
factorialInteger = 1


如果您想第二次查找阶乘,请在while循环中将值设置为
factorialInteger=1;counterA=1;
。这很有效!非常感谢!我整天都在关注这个问题,根本无法解决它。只需调试您的代码以了解问题所在。很高兴帮助您。感谢您的回复。事实证明,这是正确的-在大while循环中将counterA和factorialInteger初始化为1修复了我的问题!
    }//end while
    counterA = 1;
    factorialInteger = 1;

  }//end main