Java 如何检查int是否有值
我有以下代码,用于获取数组中的最高值和最低值,然后以七行为一行打印所有值:Java 如何检查int是否有值,java,Java,我有以下代码,用于获取数组中的最高值和最低值,然后以七行为一行打印所有值: int hochstes; int niedrig; int q = 0; for(int i = 1; i <= 49; i++){ if(hochstes == null){ hochstes = array[i]; niedrig = hochstes; }
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] + " ");
}
}
<代码>内部hochstes;
尼德里格;
int q=0;
对于(int i=1;i hochstes){
hochstes=阵列[i];
}
if(数组[i]在第4行,我试图检查hochstes是否有值,如果没有,我将数组的第一个(“第二个”)值分配给它!当然,将
hochstes
与null
进行比较是行不通的,我应该用什么来代替呢?谢谢 值类型在Java中不能为null
您必须有一个单独的boolean
变量,初始化为false
。将值指定给hochstes
时,还应将布尔值设置为true
。然后检查布尔值,查看该值是否已初始化
为此,您还可以分别将max/min变量初始化为最小/最大可能值:
int hochstes = int.MIN_VALUE;
int niedrig = int.MAX_VALUE;
然后您可以完全跳过条件。由于基本类型不能为
null
,因此您必须从另一个角度来看待它
最简单的解决方案是简单地将循环外的第一个可能值分配给它,然后从第二个值继续循环
例如:
正如Peter Lawrey正确指出的那样:您正从索引1开始迭代。记住,索引1与第一个索引不同。许多(如果不是全部的话)数据结构是基于零的,这意味着它们从0
开始,而不是1
。这就是为什么您看到我分配数组[0]
来获取第一个值。使用包装器类
做
您仍然可以使用hochstes执行正常操作,如正常int(比较/设置值等)您可以使用sentinel值。对于最大值,使用Integer.MIN\u值;对于最小值,使用Integer.MAX\u值
int hochstes = Integer.MIN_VALUE;
int niedrig = Integer.MAX_VALUE;
for(int i : array) {
if(hochstes < i) hochstes = i;
if(niedrig > i) niedrig = i;
}
int hochstes=Integer.MIN_值;
int niedrig=整数的最大值;
for(int i:array){
如果(hochstesi)niedrig=i;
}
使用整数要昂贵得多,可能会为数组的每个元素创建一个对象。您应该始终初始化变量。解决此问题的一种方法是使用数组中的第一个元素作为max/min元素:
int hochstes = array[0];
int niedrig = array[0];
另一种方法是使用变量可用的最小(或最大)值对其进行初始化:
int hochstes = Integer.MIN_VALUE;
int niedrig = Integer.MAX_VALUE;
一个
int
总是有一个值,并且永远不会null
。我说了什么当然,将hochstes与null进行比较是行不通的,我应该用什么来代替呢?谢谢`在您的情况下,使用数组中的第一个元素初始化hochstes
&niedrig
。如果存在第一个值或数组不是空的,则此操作有效。是的,这里的隐式假设是至少存在一个值。应在实际实现中添加对此的检查,以避免出现问题。OP似乎假定第一个元素也是[1]
!?很好,我添加了一个小注释来正确反映这一点代码>我没有值。它不是0,也不能对其进行操作。int只有在为instance@LoganMurphy谢谢,请相应编辑;我在想另一种语言。
int hochstes = array[0];
int niedrig = array[0];
int hochstes = Integer.MIN_VALUE;
int niedrig = Integer.MAX_VALUE;