我使用for循环作为验证检查的一种形式,以确保变量stScore的输入是一个大于0且小于或等于100的数字,如果输入不是'正确,得分参数将显示为0:
{{1}}
我的问题是,是否有任何方法可以显示一个字符串(比如说错误!)代替那个0?当然,在基础上你不能有一个int数组包含一个字符串,但我想知道是否有一个解决方法。 感谢
答案 0 :(得分:1)
一种解决方法是将某些神奇含义归因于特定int
值,而这些值绝不会在您的数据中出现。例如,声明一个常数:
private static final int INVALID_SCORE = -1;
在分配时使用它:
if ((stScore[i] > 0 && stScore[i] <= 100))
score[i] = stScore[i];
else
score[i] = INVALID_SCORE;
打印时:
System.out.println(score[i] != INVALID_SCORE ? score[i] : "Invalid score!");
缺点是,如果您忘记在以后使用数据的代码中特别处理该值,则会导致问题。
答案 1 :(得分:0)
最好的选择是将任何无效输入设置为-1。然后在输出时,您可以使用if语句检查错误值(-1)并输出相应的错误消息。
在任何类型的集合中混合类型都是不好的做法;尽可能避免使用它。
答案 2 :(得分:0)
不,不幸的是你不能:(。但我们通常不会使用0作为错误代码。在这些情况下,我使用Integer.MIN_VALUE
来表示错误。
所以你的代码将是这样的:
for(int i = 0; i < 3; i++)
if ((stScore[i] > 0 && stScore[i] <= 100))
score[i] = stScore[i];
else
score[i] = Integer.MIN_VALUE;
我建议你不要使用0.因为0,当它是退出代码时,通常意味着“OK”。在C ++中,当程序退出时没有错误,main
方法返回0。或者,也可以使用Integer.MAX_VALUE
。
对于更易读的代码,您可以声明一个名为ERROR
的常量:
final int ERROR = Integer.MIN_VALUE;
答案 3 :(得分:-1)
throw new IllegalArgumentException("your score is below zero");
这似乎是合适的