栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有关在数组中查找最小值和最大值的Integer.MAX_VALUE和Integer.MIN_VALUE的说明

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有关在数组中查找最小值和最大值的Integer.MAX_VALUE和Integer.MIN_VALUE的说明

但是对于这种方法,我不了解Integer.MAX_VALUE和Integer.MIN_VALUE的目的。

通过与起步,

smallest
设定为
Integer.MAX_VALUE
largest
设置为
Integer.MIN_VALUE
,他们没有后来担心在特殊的情况
smallest
largest
没有价值呢。如果我要查看的数据
10
的第一个值为a,那么
numbers[i]<smallest
它将为true(因为
10
<

Integer.MAX_VALUE
),我们将更新
smallest
10
。同样,
numbers[i]>largest
将是
true
因为
10
>

Integer.MIN_VALUE
,我们将更新
largest
。等等。

当然,这样做时,必须确保要查看的数据中至少有一个值。否则,您最终会在

smallest
和中获得伪数字
largest


请注意onome Sotu在评论中指出观点:

…如果数组中的第一项大于其余项,则由于else-if语句,最大项将始终为Integer.MIN_VALUE。

这是真的 这是一个演示问题的简单示例(实时复制):

public class Example{    public static void main(String[] args) throws Exception {        int[] values = {5, 1, 2};        int smallest = Integer.MAX_VALUE;        int largest  = Integer.MIN_VALUE;        for (int value : values) { if (value < smallest) {     smallest = value; } else if (value > largest) {     largest = value; }        }        System.out.println(smallest + ", " + largest); // 1, 2 -- WRONG    }}

要解决此问题,请执行以下任一操作:

  1. 不要使用

    else
    ,或

  2. 从第一个元素开始

    smallest
    largest
    等于第一个元素,然后循环其余元素,并保持
    else if

这是第二个示例(实时复制):

public class Example{    public static void main(String[] args) throws Exception {        int[] values = {5, 1, 2};        int smallest = values[0];        int largest  = values[0];        for (int n = 1; n < values.length; ++n) { int value = values[n]; if (value < smallest) {     smallest = value; } else if (value > largest) {     largest = value; }        }        System.out.println(smallest + ", " + largest); // 1, 5    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号