2013-11-21 3 views
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, 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; Не могу понять, что случилось. Но когда я присваиваю значения для [0] .. a [9], это работает. Может кто-то мне помочь, пожалуйста?Ява-массив мин. И макс. Проблема

ответ

6

Well number.nextInt (100); вернет число от 0 ans 99. Поскольку вы инициализируете min с a[0]; (это 0, когда вы создали массив int), вы всегда получаете как минимум минимум 0.

Попробуйте инициализирует min с min = Integer.MAX_VALUE;

+2

+1 вы меня бить :) – Thomas

+0

Ty, что была проблема. – user3018155

+0

Хорошо, что решить эту проблему. один короткий вопрос, поэтому я могу использовать max = Integer.MIN_Value; для максимума? – user3018155

0

Я предполагаю, что вы вводите только положительные числа. Чтобы это работало по назначению (я предполагаю, что вы хотите получить наименее введенный номер), инициализируйте min с помощью Integer.MAX_VALUE.

Проблема заключается в следующем:

int [] a = new int [10]; создаст массив из 10 целых чисел и поскольку элементы являются примитивными целыми числами, они инициализируются с 0.

min = max = a[0]; впоследствии инициализировать min с 0, несмотря на то, x = number.nextInt (100); может позже возвращать только числа, превышающие 0.

Даже инициализация max с 0 неверна, если вы пытаетесь также генерировать отрицательные числа. Таким образом, лучше инициализировать max с Integer.MIN_VALUE.

0
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. 
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); 
} 
Смежные вопросы