java - 异常后Java不打印
问题描述
我正在学习Java,现在我需要打印数组打印异常消息。但是当我运行代码时,他在第一个异常消息(a [1])处停止并在没有完成数组的情况下关闭程序,我做错了什么?
他应该给我看:a0 + error + a2 + error + a4 但他在给我看:a0 + error
这是我的第一堂课:
package media;
public class aluno {
private String nome;
private double nota1, nota2;
private double media;
public aluno(String n, double n1, double n2) {
this.nome = n;
this.nota1 = n1;
this.nota2 = n2;
}
public double calcularMedia() {
if (nota1 > 10 || nota2 > 10) {
throw new ArithmeticException("Médias e notas não podem passar de 10!");
}
else if(nota1 < 0 || nota2 < 0) {
throw new ArithmeticException("Médias e notas devem se manter entre 0 e 10!");
}
else {
media = (this.nota1 + this.nota2) / 2;
}
return media;
}
public String toString() {
return "Aluno: " + nome + " Media: " + calcularMedia();
}
}
这是我的主要内容:
package media;
public class program {
public static void main(String[] args) {
aluno a[] = new aluno[5];
a[0] = new aluno("Guilherme", 8, 9);
a[1] = new aluno("Leonardo", 16, 2);
a[2] = new aluno("Beatriz", 6, 10);
a[3] = new aluno("Karina", -2, -5);
a[4] = new aluno("Gustavo", 3, 8);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i].toString());
}
}
}
解决方案
您应该在 for 循环中添加一个 try-catch 块。main 方法将被停止,因为第一个元素抛出未处理的异常。
for (int i = 0; i < a.length; i++) {
try{
System.out.println(a[i].toString());
}
catch(ArithmeticException ex){
System.err.println(ex.getMessage());
}
}
这样,将为数组的每个元素处理 ArithmeticException。
另外,类名以大写字母开头,所以用 Aluno 代替 aluno。
抛出异常也会返回您的函数,因此您也可以简化代码。不需要其他情况。它增加了代码的可读性。这种 if 条件称为保护语句。
public double calcularMedia() {
if (nota1 > 10 || nota2 > 10) {
throw new ArithmeticException("Médias e notas não podem passar de 10!");
}
if(nota1 < 0 || nota2 < 0) {
throw new ArithmeticException("Médias e notas devem se manter entre 0 e 10!");
}
return (this.nota1 + this.nota2) / 2;
}
推荐阅读
- c++ - Qt Creator 项目构建变量从何而来?
- azure - 如何使用 AgentName 和 AgentPool 的空格将参数传递给 commandToExecute
- asp.net-core - Asp.Net Razor Pages OnClick 未触发
- powershell - 如何用Powershell替换文本文件中的路径
- python - 含义: urlTags = [t[11:] for t in tags if t.startswith('site_url')]
- google-api - Gmail API 服务帐户问题
- string - 如果单词小于范围,如何在 Flutter 中添加子字符串范围 | 扑
- bash - 从文本文件为 Bash 创建作业数组
- apache-kafka - 使用 3 个 Zookeeper 和 3 个 Broker 节点设置 Kafka 集群
- string - 如何替换 DB2 中段落之间的特定字符串