图中代码为什么运行不了?

这个代码为什么运行不了。其他的都没问题。输入完数值以后。无法判断最大值最小,这是怎么回事?

img

img

你的数组长度是 5, 它的索引范围是 0 到 4,你下面 这里等于5 ,肯定是越界访问了,这也是这个错误

img

另外你上面的输入,从 1开始 ,那 0索引的元素就没有初始化元素,这也是有问题的

  1. 数组下标是从0开始的,a[0] 代表数组的第一个数字
  2. 数组长度为5,那么第五个数字是a[4],没有a[5]
  3. 另外你的判断大小的逻辑也有问题,if 和 else 是一对组合,只有if 和 else代表只有两种情况,如果想要第三种,需要在二者之间添加else if
  4. 在你的条件逻辑中,if 执行了就不会执行 else,if (a[i] > max) 就执行 max = a[i], max的值是0,数组中的值只要大于0就更新max
  5. 也就是说只要你输入的数组元素都大于0,程序永远无法执行到else语句,min的值永远无法更新
  6. 我建议你把max的值赋值为Integer.MIN(最小值),min 的值赋值为Integer.MAX(最大值),这样你的程序能适用于数组元素为正负值的所有情况
  7. 并且在for循环中把else删掉,模仿判断最大值再写一个if语句单独判断最小值