Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在int数组中显示字符串(用于验证检查)_Java_Arrays_String_Validation - Fatal编程技术网

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

Java 在int数组中显示字符串(用于验证检查),java,arrays,string,validation,Java,Arrays,String,Validation,我使用for循环作为验证检查的一种形式,以确保变量stScore的输入是一个大于0小于等于100的数字,如图所示,如果输入不正确,score参数将显示为0: for(int i = 0; i < 3; i++) if ((stScore[i] > 0 && stScore[i] <= 100)) score[i] = stScore[i]; else score[i] = 0; 我的问题是,是否有任何方法可以显示

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

for(int i = 0; i < 3; i++)
    if ((stScore[i] > 0 && stScore[i] <= 100))
        score[i] = stScore[i];
    else
        score[i] = 0;
我的问题是,是否有任何方法可以显示一个字符串来表示类似错误的内容!而不是0?当然,基本上不能让int数组包含字符串,但我想知道是否有解决方法。
谢谢

最好的选择是将任何无效输入设置为-1。然后在输出时,可以使用if语句检查错误值-1并输出适当的错误消息

在任何类型的集合中混合类型都是不好的做法;尽可能避免

throw new IllegalArgumentException("your score is below zero");

这似乎是合适的

一种解决方法是将某些神奇的含义赋予数据中永远不会出现的特定int值。例如,声明一个常数:

private static final int INVALID_SCORE = -1;
在分配以下内容时同时使用:

if ((stScore[i] > 0 && stScore[i] <= 100))
    score[i] = stScore[i];
else
    score[i] = INVALID_SCORE;

缺点是,如果您忘记在以后使用数据的代码中特别处理该值,则会导致问题。

否,很遗憾,您不能:。但是我们通常不使用0作为错误代码。在这些情况下,我使用Integer.MIN_值表示错误

因此,您的代码如下所示:

for(int i = 0; i < 3; i++)
    if ((stScore[i] > 0 && stScore[i] <= 100))
        score[i] = stScore[i];
    else
        score[i] = Integer.MIN_VALUE;

您的代码片段根本不打印任何内容。它都是一个更大类的一部分。作为特殊值答案的替代方法:创建一个并行布尔数组,对有效条目包含true,对其他条目包含false。我认为这不是一个好主意,因为这应该是偶尔会发生的事情。抛出异常将使数组中的有效分数未分配。只需提供另一个选项。如果目标是将坏数据归零,那么异常将是错误的。如果坏数据是错误条件,那么根据定义,超出可接受范围的分数是非法参数。您将该错误传递回传入值的对象,并让调用方处理该错误,必要时重新运行例程。我不会使用0,因为它与有效范围相邻。它看起来是有效状态而不是错误状态。
for(int i = 0; i < 3; i++)
    if ((stScore[i] > 0 && stScore[i] <= 100))
        score[i] = stScore[i];
    else
        score[i] = Integer.MIN_VALUE;
final int ERROR = Integer.MIN_VALUE;