有了这段代码,我的目标是在终端中显示一个id号数组,可以为其分配“等级”。创建它是为了处理异常并在发生异常时显示消息。在代码的最终输出中,必须列出数组中的所有五个变量,超过“100”的变量将列为“0”。问题是,每当引发此异常时,文本不会输出到终端,它也会将所有其余的“grades”设置为“0”。我想知道是否有任何方法可以避免这种情况,并让代码在“for”循环期间将消息输出到终端,以及避免将所有其他值替换为“0”以下是代码:
//ScoreException.Java
public class ScoreException extends Exception {
public ScoreException(String s) {
super(s);
}
}
//TestScore.Java
import java.util.*;
public class TestScore {
public static void main(String args[]) throws Exception {
Scanner input = new Scanner(System.in);
int[] ids = {1234, 2345, 3456, 4567, 5678};
int[] scores = {0, 0, 0, 0, 0};
String scoreString = new String();
final int HIGHLIMIT = 100;
String inString, outString = "";
for (int x = 0; x < ids.length; ++x) {
try{
System.out.println("Enter score for student id number: " + ids[x]);
inString = input.next();
if(scores[x]>HIGHLIMIT){
throw new ScoreException("Score over 100");
}
}catch(ScoreException e){
scores[x]=0;
System.out.println("Score over 100");
}
}
for (int x = 0; x < ids.length; ++x)
outString = outString + "ID #" + ids[x] + " Score " + scores[x] + "\n";
System.out.println(outString);
}
}
2条答案
按热度按时间bqucvtff1#
您需要将输入分配给数组的当前索引。此外,您还需要在异常情况下减少计数器。
示例运行:
ffdz8vbo2#
不会抛出异常。任何元素都没有赋值
scores
数组,使它们保持为0。因此scores[x]==HIGHLIMIT
从来都不是真的。也应该是吗scores[x] > HIGHLIMIT
?