[英]Java - Find High and Low Number in an Array
我試圖在數組中找到高低數,但我不確定為什么我的代碼不能正常工作。 它給了我 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);
}
}
你需要從足夠low
開始; 目前,您從零開始 - 太低而無法“捕獲”數組的最低元素。
有兩種方法可以解決這個問題:
Integer.MAX_VALUE
和Integer.MIN_VALUE
啟動high
和low
,或high
和low
,然后從第二個元素開始處理數組。int low = Integer.MAX_VALUE;
int high = Integer.MIN_VALUE;
PS 你會發現打印出奇怪的數字,因為你使用了字符而不是整數:
int[] numbs = { 2, 4, 2, 8, 4, 2, 5};
另外..它可能正在打印ASCII表示...使用實際整數(我不確定您是否有意使用字符)。
您應該將low
和high
都設置為數組第一個位置的值。
int low = numbs[0];
int high = numbs[0];
如果第一個位置確實是最低值,它將永遠不會被交換,否則它將與較低的數字交換,最高數字也會發生同樣的情況。
你需要一個整數數組,你應該像這樣聲明:
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代碼點。 的UTF-16代碼點8
是56。
將 char 視為數字類型可能很有用。 例如,我們可以通過以下方式計算字母表的第 n 個字母
char nthLetter = (char) `A` + n;
或通過查找數字的數值
if ('0' <= digit && digit <= '9')
return value = digit - '0';
else
throw new IllegalArgumentException(digit);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.