我如何找出为什么我的Java程序总是崩溃?

问题描述

我已经学习Java一周了,没有其他经验。程序不断崩溃,如果输入错误,我会再次被自动询问。

import java.util.Scanner;

public class test {

    public static void main(String[] args) {
        boolean error;
        Scanner scan = new Scanner(System.in);

        do {
            error = false;
        System.out.print("Tell me the Year: ");
        if (scan.hasNextInt()) {
            int jahr = scan.nextInt();
            scan.close();
            if (schaltjahre(jahr)) {

                System.out.println("Please enter the leap year ");
            } else {
                System.out.println("It is not a leap year");
            }

        } else {
            System.err.println("enter an integer year!");
            error = true;
            scan.close();
        }
    }while (error);
    }
   

    public static boolean schaltjahre(int jahr) {
        // Aufgabe 1
        if (jahr % 400 == 0) {
            return true;
        } else if (jahr % 100 == 0) {
            return false;
        } else if (jahr % 4 == 0) {
            return true;
        }
        return false;
    }

解决方法

您应该在循环内实例化扫描程序,并且不要在else语句中将其关闭。 您的代码应如下所示:

    public static void main(String[] args) {
    boolean error;
    Scanner scan ;

    do {
        error = false;
        scan = new Scanner(System.in);
        System.out.print("Tell me the Year: ");
        if (scan.hasNextInt()) {
            int jahr = scan.nextInt();
            scan.close();
            if (schaltjahre(jahr)) {

                System.out.println("Please enter the leap year ");
            } else {
                System.out.println("It is not a leap year");
            }

        } else {
            System.err.println("enter an integer year!");
            error = true;
        }
    } while (error);
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...