如何检查int是否有值

时间:2013-12-12 20:04:09

标签: java

我有这段代码,要获取数组中的最高和最低值,然后打印出七行中的所有值:

int hochstes;
int niedrig;
        int q = 0;
        for(int i = 1; i <= 49; i++){
           if(hochstes == null){
               hochstes = array[i];
               niedrig = hochstes;
            }
           if(array[i] > hochstes){
               hochstes = array[i];
            }
           if(array[i] < niedrig){
               niedrig = array[i];
           }

           q++;
           if(q == 7){
               q = 0;
               System.out.println("");
            }else{
              String a = (i < 10) ? " " + i : "" + i;
              System.out.print(a + ": " + array[i] + "  ");
           }

        }

在第4行,我试图检查hochstes是否有值,如果没有,我将数组的第一个(“第二个”)值分配给它!当然不能比较hochstesnull我应该用什么代替谢谢!

5 个答案:

答案 0 :(得分:6)

由于原始类型不能是null,你必须以另一种方式看待它。

最简单的解决方案是简单地在循环外为其分配第一个可能的值,并从第二个值继续循环。

E.g:

int hochstes = array[0];

// Loop from 1 to higher

正如Peter Lawrey正确评论的那样:你在索引1处开始迭代。索引1与第一个索引不同,记住这一点。许多(如果不是全部)数据结构都是从零开始的,这意味着它们从0开始,而不是1。这就是为什么你看到我指定array[0]来获得第一个值。

答案 1 :(得分:4)

您可以使用哨兵值。要获得最大值,请使用Integer.MIN_VALUE,并至少使用Integer.MAX_VALUE。

int hochstes = Integer.MIN_VALUE;
int niedrig = Integer.MAX_VALUE;

for(int i : array) {
    if(hochstes < i) hochstes = i;
    if(niedrig > i)  niedrig = i;
}

使用Integer会更加昂贵,并且可以为数组的每个元素创建一个对象。

答案 2 :(得分:2)

使用包装类

DO

Integer hochstes = null;

你仍然可以像普通的int(比较/设置值等)那样使用hochstes进行正常操作

答案 3 :(得分:1)

您应该始终初始化变量。解决此问题的一种方法是使用数组中的第一个元素作为max / min元素:

int hochstes = array[0];
int niedrig = array[0];

其他方法是使用可用于变量的最小(或最大)值来初始化它:

int hochstes = Integer.MIN_VALUE;
int niedrig = Integer.MAX_VALUE;

答案 4 :(得分:0)

Java中的值类型不能是null

您必须有一个单独的boolean变量,初始化为false。为hochstes指定值时,还要将布尔值设置为true。然后检查你的布尔值以查看该值是否已经初始化。

出于此特定目的,您还可以将最大/最小变量分别初始化为最小/最大可能值:

int hochstes = int.MIN_VALUE;
int niedrig = int.MAX_VALUE;

然后,您可以完全跳过条件。