2017-05-26 11 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);  
    } 
} 

最小値ではなく最大値を得ることができます。私は初心者です。最初の配列の値を持つ値が、私はあなたが分に設定した場合、あなたは(それがデフォルト値ですゼロに設定し、[0]またはちょうど0ランダムに生成された配列の最小値と最大値をjavaで取得する

+0

を** if(RandNum ShayHaned

+0

@アンドレアスはOPは 'int min = arr [0];'を実行します。 'min'は' 0'のままです –

答えて

1

まず、あなたが、

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

これはminを初期化することによって避けることができるように、最初の数はそれにいくつかの初期値を与えるために、最低限として扱われていることを確認する必要がありInteger.MAX_VALUE

その後、あなたはないarray[0]のため、また

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

、同様に、minと比較する必要があります何の価値がある、あなたはまた、

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になるということです。それで、その中で最初のランダムなものが1回だけ取り込まれます。私はそれを速くした。混乱してごめんなさい – Gatusko

1

分値が配列であるかどうか分かりません初期化された配列内の整数)したがって、生成される数値はそれ以上に大きくなりません。以下のようなものに分を設定します。

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

あなたは常に[0]の代わりに "分" に比較することARRして比較します。
次のように記述する必要があります

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

ノート:

  1. は、最初の配列の位置にminmaxを設定します。
  2. forループの現在のインデックスが0より大きいかどうかを確認する必要はありません。min変数が現在の乱数よりも大きいかどうかを確認してください。例えば、if (min > number) min = number;
  3. より簡単なロジックを使用してベクトルを印刷します。Arrays.toStringを使用して、

    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); 
        } 
    } 
    

    よりシンプルなアプローチ:

独自のコードを使用して

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の主な問題の1つ、if(RandNum

関連する問題