【问题标题】:Factorial of a positive integer between 1-10. Issue: Works only if valid input is greater than previous input1-10 之间的正整数的阶乘。问题:仅当有效输入大于先前输入时才有效
【发布时间】:2019-03-10 07:12:25
【问题描述】:

第一次运行一切正常,但如果我输入一个介于 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

【问题讨论】:

  • 如果您想第二次查找阶乘,请在 while 循环内将值设置为 factorialInteger = 1; counterA = 1;
  • 这成功了!太感谢了!我一直盯着这个看了一天,根本想不通。
  • 只需调试您的代码即可了解问题出在哪里。很高兴为您提供帮助。

标签: java validation input while-loop factorial


【解决方案1】:

您必须将counterAfactorialInteger 设置回外部的一个 while 循环。

counterA = 1;
factorialInteger = 1


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

  }//end main

【讨论】:

  • 感谢您的回复。事实证明,在大型 while 循环中将 counterA 和 factorialInteger 重新初始化为 1 解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多