2017-05-26 223 views
0
import java.util.Random; 

public class Java { 

    public static void main(String args[]) { 
     int arr[] = new int[10]; 
     Random Rand = new Random(); 

     int max = 0; 
     int min = arr[0]; 


     for(int i = 0; i < 10; i++) { 
      int RandNum = Rand.nextInt(10); 
      arr[i] = RandNum; 

      if (i == 0) System.out.print("["); 

      System.out.print(arr[i] + " "); 

      if (i == 9) System.out.println("]"); 


      if (RandNum>max) { 
       max = RandNum; 
      } 

      if (i > 0) { 
       if (RandNum < arr[0]) { 
        min = RandNum; 
       } 
      } 
     } 

     System.out.println("Minimum number: " + min); 
     System.out.println("Maximum number: " + max);  
    } 
} 

我可以獲得最大值,但不是最小值..請耐心等待,我是初學者,我試過比較min與第一陣列值值,但我不知道,如果最小值應該是數組[0],或只是0在java中獲取隨機生成數組中的最小值和最大值

+0

** if(RandNum ShayHaned

+0

@Andreas不會工作,OP做'int min = arr [0];'。 'min'將保持爲'0' –

回答

1

首先,你需要確保第一個數字被視爲最小,給它一些初始值,如

if(i==0){ 
    System.out.print("["); 
    min = RandNum; 
} 

這可以通過初始化min是可以避免的,與Integer.MAX_VALUE

然後,你需要與min,而不是像array[0]比較還,

if(i>0){ 
    if(RandNum<min){ 
     min = RandNum; 
    } 
} 

,爲什麼它的價值,你也可以做

System.out.println("Minimum number: " + Arrays.stream(arr).min()); 
System.out.println("Maximum number: " + Arrays.stream(arr).max()); 
0
int min=0; // Define with cero 
    for(int i=0; i<10; i++) 
    { 
    // Logic of min 
    arr[i] = RandNum; 
    if(i ==0) // JUST in the first time 
     { 
     min=arr[0] 
     } 
    if(RandNum<min) // This inside your for 
     { 
     min = RandNum; 
    } 
} 
+0

那麼我的邏輯是min將是第一個cero。然後它會在第一次隨機裏只進行一次。我做得很快。對於混淆,我很抱歉 – Gatusko

1

當您設定分鐘,你把它設置爲零(這是默認值初始化數組中的整數)。因此,所產生的數字永遠不會比它大。將min設置爲:

min = Integer.MAX_VALUE; 

然後檢查每個新生成的數字,而不是跳過循環的第一次迭代。

你也沒有用min檢查新生成的數字,而是使用數組的第一個數字。使用這個:

if(RandNum < min) /*do stuff*/; 

希望這有助於!

-1

試試這個:

public static void main(String[] args) { 
    int arr[] = new int[10]; 
    Random Rand = new Random(); 


    int max=0; 
    int min=11; 


    for(int i=0; i<10; i++) 
    { 
     int RandNum = Rand.nextInt(10); 
     arr[i] = RandNum; 


     if(i==0) { System.out.print("["); } 

     System.out.print(arr[i] + " "); 

     if(i==9) { System.out.println("]"); } 


     if(RandNum>max) 
     { 
      max = RandNum; 
     } 



      if(RandNum<min) 
      { 
       min = RandNum; 
      } 


    } 

    System.out.println("Minimum number: " + min); 
    System.out.println("Maximum number: " + max); 

    } 
+0

如果你解釋了OP的錯誤,明確指出你改變了什麼,並解釋了你爲什麼做了你所做的以及它如何糾正了問題,那麼這個答案會更有用。 –

1

你總是比較arr中的[0],而不是比較 「分鐘」。
你應該寫:

if(RandNum<min) 
{ 
    min = RandNum; 
} 
1

注:

  1. 設置minmax到第一陣列的位置。
  2. 您不需要檢查for循環的當前索引是否大於0,只需檢查min變量是否大於當前隨機數。例如if (min > number) min = number;
  3. 使用更簡單的邏輯打印矢量。

使用自己的代碼:

import java.util.Random; 

public class App { 

    public static void main(String... args) { 
     int count = 10; 
     int arr[] = new int[count]; 
     Random random = new Random(); 

     int max = arr[0]; 
     int min = arr[0]; 

     for (int i = 0; i < count; i++) { 
      int number = random.nextInt(20); 
      arr[i] = number; 

      if (i == 0) { 
       System.out.print("Array: [ " + number + " "); 
      } else if (i == count - 1) { 
       System.out.println(number + " ]"); 
      } else { 
       System.out.print(number + " "); 
      } 

      if (max < number) { 
       max = number; 
      } 

      if (min > number) { 
       min = number; 
      } 
     } 

     System.out.println("Minimum number: " + min); 
     System.out.println("Maximum number: " + max); 
    } 
} 

一種更簡單的方法,使用Arrays.toString

import java.util.Arrays; 
import java.util.Random; 

public class App { 

    public static void main(String... args) { 
     int count = 10; 
     int array[] = new int[count]; 
     int min = array[0], max = array[0]; 
     final Random random = new Random(); 

     for (int i = 0; i < count; i++) { 
      int number = random.nextInt(10); 
      array[i] = number; 

      if (min > number) { 
       min = number; 
      } 

      if (max < number) { 
       max = number; 
      } 
     } 

     System.out.println("Array: " + Arrays.toString(array)); 
     System.out.println("Minimum number: " + min); 
     System.out.println("Maximum number: " + max); 
    } 
} 

使用Java流API(Java的8或更新版本):

import java.util.Arrays; 
import java.util.Random; 

public class App { 

    public static void main(String... args) { 
     final int[] array = new Random().ints(10).toArray(); 
     System.out.println("Arrays: " + Arrays.toString(array)); 
     System.out.println("Minimum number: " + Arrays.stream(array).min()); 
     System.out.println("Maximum number: " + Arrays.stream(array).max()); 
    } 
} 
+0

雖然你在代碼中修正了它,但你並沒有明確提到OP的主要問題之一,即'if(RandNum

相關問題