【问题标题】:how to apply system exit when pressing 0按0时如何应用系统退出
【发布时间】:2023-03-04 04:51:01
【问题描述】:

所以我有这个接受用户输入的阶乘程序。一切正常,但我试图弄清楚如何通过输入 0 来结束程序。由于它是布尔运算,我无法输入 if 语句,因为我会得到一个编译错误。

import java.util.*;
import java.io.*;

public class Assignment2A {

    public static void main(String[] args){ 
        Scanner scan = new Scanner(System.in);
        boolean correct = false;
        while(!false){
            try{
                System.out.println("Welcome to the factorial function");
                System.out.println("Please enter a number or press 0 to exit");
                int n = scan.nextInt();
                // if(n=0){
                // System.exit(0);
                //}
                int factorial= fact(n);
                System.out.println("The Factorial of the number entered is: " + factorial);
                correct = true;
            }catch(Exception e){
                System.out.println("That is not a number!");
                System.exit(0);
            }
        }
    }

    static int fact(int n){
        int output;
        if(n==1){
            return 1;
        }
        output = fact(n-1)*n;
        return output;
    }
}

【问题讨论】:

  • while(!false){while(true){ 相同
  • 应该是if (n == 0),而不是(n=0)
  • 仅供参考:这里不需要System.exit 的大锤 - 只需致电break

标签: java recursion factorial


【解决方案1】:

不幸的是,没有任何(简单的)方法可以做到这一点。最接近的等价物是实现KeyListener,但这仅适用于 Swing 方法(Windows 和其他东西,而不是 CLI)。

相反,您应该检查是否输入了某个值。例如,0!只是 1,所以你可以让你的程序说“输入一个数字来分解,或者输入 0 退出”。您也可以使用负数来执行此操作,因为您的程序看起来不能很好地处理它们。顺便说一句,也许您也应该添加一个负数检查。

【讨论】:

    【解决方案2】:

    所以我也是一个初学者,但试试这个......

    System.out.println("欢迎使用阶乘函数");

    System.out.println("请输入数字或按0退出");

    int n = scan.nextInt();

    如果(n==0)中断; //将break放在这里试一试,尝试使用exit但对我不起作用

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 2018-11-28
      • 2020-06-03
      相关资源
      最近更新 更多