英文:
How can I find out why my Java program keeps crashing?
问题
以下是您要求的翻译内容:
我已经学习了一个星期的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("告诉我年份:");
if (scan.hasNextInt()) {
int jahr = scan.nextInt();
scan.close();
if (isLeapYear(jahr)) {
System.out.println("请输入闰年");
} else {
System.out.println("这不是一个闰年");
}
} else {
System.err.println("请输入整数年份!");
error = true;
scan.close();
}
} while (error);
}
public static boolean isLeapYear(int year) {
// Task 1
if (year % 400 == 0) {
return true;
} else if (year % 100 == 0) {
return false;
} else if (year % 4 == 0) {
return true;
}
return false;
}
}
英文:
I have been learning Java for a week, I have no other experiences. The program keeps crashing, I would like to be automatically asked again in the event of an incorrect entry.
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;
}
答案1
得分: 1
你应该在循环内部实例化扫描器,并且不要在else语句中关闭它。
你的代码应该类似于这样:
public static void main(String[] args) {
boolean error;
Scanner scan ;
do {
error = false;
scan = new Scanner(System.in);
System.out.print("告诉我年份:");
if (scan.hasNextInt()) {
int jahr = scan.nextInt();
scan.close();
if (schaltjahre(jahr)) {
System.out.println("请输入闰年");
} else {
System.out.println("这不是闰年");
}
} else {
System.err.println("请输入一个整数年份!");
error = true;
}
} while (error);
}
注意:这里的翻译结果只包括代码部分的翻译,不包括问题中的内容。
英文:
You should instantiate the scanner inside the loop and don't close it in the else statement.
Your code should be something like this :
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);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论