[英]Java array min and max issue
package array;
import java.util.*;
public class Array {
public static void main(String[] args) {
int [] a = new int [10];
Random number = new Random ();
int x;
int min, max ;
min = max = a[0];
for (int b = 0; b<a.length; b++)
{
x = number.nextInt (100);
// System.out.println (x); just for testing x
a [b]= x;
System.out.println (a[b]);
if (a[b] < min) min = a[b];
if (a[b] > max) max = a[b];
}
System.out.println ("Min is: " + min + " " + "Max is: "+ max );
}
}
當我設置min = a [0]時; 並且max = a [0] ,它僅返回最大值,並且min始終為0; 無法弄清楚出了什么問題。 但是,當我為a [0] .. a [9]分配值時,它可以工作。 有人能幫助我嗎?
井號number.nextInt (100);
將返回介於0
和99
之間的數字。 由於您使用a[0];
初始化了min
a[0];
(當您創建int
數組時為0),您總是總是得到最小的0。
嘗試使用min = Integer.MAX_VALUE;
初始化min
min = Integer.MAX_VALUE;
我假設您只輸入正數。 為了使此功能按預期工作(我假設您想獲得輸入最少的數字),請使用Integer.MAX_VALUE
初始化min。
問題如下:
int [] a = new int [10];
將創建一個由10個int組成的數組,並且由於元素是原始整數,因此將它們初始化為0。
min = max = a[0];
即使x = number.nextInt (100);
隨后也會將min
初始化為0 x = number.nextInt (100);
稍后可能僅返回大於0的數字。
如果您也嘗試生成負數,則即使使用0初始化max
也是錯誤的。 因此,最好使用Integer.MIN_VALUE
初始化max
。
min = max = a[0]; // this statement initialize min variable with 0
if (a[b] < min) min = a[b]; // this statement will never execute because your are assigning new value to a[] on each index, even random class generate 0.
//if (a[b] < min) min = (a[b]);
//the condition is never met because the min value of x is always 0
package array;
import java.util.*;
public class Array {
public static void main(String[] args) {
int [] a = new int [10];
Random number = new Random ();
int x;
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int b = 0; b<a.length; b++){
x = number.nextInt (100);
// System.out.println (x); just for testing x
a [b]= x;
System.out.println (a[b]);
if (a[b] < min) min = a[b];
if (a[b] > max) max = a[b];
}
System.out.println ("Min is: " + min + " " + "Max is: "+ max );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.