在int数组中显示字符串(用于验证检查)

时间:2015-10-03 14:35:07

标签: java arrays string validation

我使用for循环作为验证检查的一种形式,以确保变量stScore的输入是一个大于0且小于或等于100的数字,如果输入不是'正确,得分参数将显示为0:

{{1}}

我的问题是,是否有任何方法可以显示一个字符串(比如说错误!)代替那个0?当然,在基础上你不能有一个int数组包含一个字符串,但我想知道是否有一个解决方法。 感谢

4 个答案:

答案 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");

这似乎是合适的