Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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-查找数组中的高和低数字_Java - Fatal编程技术网

Java-查找数组中的高和低数字

Java-查找数组中的高和低数字,java,Java,我试图找到数组中的高和低数字,但我不确定为什么我的代码不能正常工作。它给了我0和56的输出。我理解为什么它会给出0,但是56是从哪里来的呢 package test; public class Test { public static void main(String[] args) { int[] numbs = { '2', '4', '2', '8', '4', '2', '5'}; int count = 0; int low

我试图找到数组中的高和低数字,但我不确定为什么我的代码不能正常工作。它给了我0和56的输出。我理解为什么它会给出0,但是56是从哪里来的呢

package test;

public class Test {

    public static void main(String[] args) {
        int[] numbs = { '2', '4', '2', '8', '4', '2', '5'};

        int count = 0;
        int low = 0;
        int high = 0;

        while(count < numbs.length)
        {
             if(numbs[count]< low) {
                low = numbs[count];
            }

            if(numbs[count]> high) {
                high = numbs[count];
            }

            count++;   
        }

        System.out.println(low); 
        System.out.println(high);           

    }
}
封装测试;
公开课考试{
公共静态void main(字符串[]args){
int[]numbs={'2','4','2','8','4','2','5'};
整数计数=0;
int低=0;
int高=0;
while(计数高){
高=麻木[计数];
}
计数++;
}
系统输出打印项次(低);
系统输出打印项次(高);
}
}

您需要将
启动得足够低;目前,它的起始值为零—太低,无法“捕获”数组中最低的元素

int low = numbs[0];
int high = numbs[0];
有两种方法可以解决这个问题:

  • 使用
    Integer.MAX\u值
    Integer.MIN\u值
    启动
    ,或
  • 使用数组的初始元素启动
    ,然后从第二个元素开始处理数组


另外,您会发现打印的数字很奇怪,因为您使用的是字符而不是整数:

int[] numbs = { 2, 4, 2, 8, 4, 2, 5};

还有。。它可能正在打印ASCII表示。。。使用实际整数(我不确定您是否有意使用字符)。

您应该将
低位
高位
设置为数组第一个位置的值

int low = numbs[0];
int high = numbs[0];
如果第一个位置确实是最低的值,它将永远不会被交换,否则它将被交换一个较低的数字,同样的情况也会发生在最高的数字上

您需要一个INT数组,应该像这样声明:

int[] numbs = {2, 4, 2, 8, 4, 2, 5};

您得到的最大值是
56
,因为根据ASCII表,字符“8”的十进制表示形式是
56

如果在数组init块中使用
char
s而不是
int
s,它会立即转换为
int
s以适应
int[]
数组,但是不要使用它的实际值,而是使用unicode值,其中:2=52和8=56

'8'
char
文字,而不是
int
。Java语言规范char
如下所示:

整数类型是byte、short、int和long[…]和char,其值是表示UTF-16代码单元的16位无符号整数

如果在需要
int
的地方使用
char
,则
char
将隐式转换为
int
。由于
char
是数字类型,因此将保留其数值,即UTF-16。
8
的utf-16编码点为56

将char视为数字类型可能很有用。例如,我们可以通过

char nthLetter = (char) `A` + n;
或通过以下方式查找数字的数值:

if ('0' <= digit && digit <= '9')
    return value = digit - '0';
else
    throw new IllegalArgumentException(digit);

if('0'提示:如果您首先对数组排序,最高和最低的数字将位于非常特定的位置。是的,肯定没有那么有效,但是对于如此小的n数,差异可以忽略不计,而且代码更易于阅读和维护。