2017-02-11 17 views
0

だから私は最大と最小を10個の配列で探し、最大と最小を入れ替える必要があります。あなたがこれを解決する複数の方法を持っているなら、より良いでしょう。maxとminをスワップ

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    int [] integers = new int [10]; 
    int max = 0; 
    int min = 0; 
    System.out.println("Please enter the 10 integers:"); 

    for (int counter = 0 ; counter < integers.length ; counter++) { 
        integers[counter] = scan.nextInt(); 
    } // end for loop 

    integers[0] = max; 
    integers[0] = min;    // keep getting min as 0 

    for (int counter = 0 ; counter < integers.length ; counter++) { 
     if (integers[counter] > max) { 
      max = integers[counter]; 
      maxIndex = counter; 
     } 
     if (integers[counter] < min) { 
      min = integers[counter] ; 
      minIndex = counter; 
     } 

    } // end loop 

    System.out.println(max); 
    System.out.println(min);   

} 
+3

親愛なる勝利者に、あなたの宿題をするべきではないと感じてください。あなたはすでに何をしたのか、何を試してみたのか、私たちに情報を与えてください。具体的な問題について話すことができます –

+0

'min = integer [0];'ではなく、integer [0] = min; 'を意味すると思います。 (最大と同じ) –

+0

あなたは絶対に正しいマティアスです。私に思い出させてくれてありがとう、本当に感謝してくれてありがとうAndyに感謝してくれてありがとう。あなたは少なくとも私に交換のヒントを教えてもらえますか?オペレータか何か、彼らdidntは教えてくれた理由thatsなぜ – Fawaz

答えて

1

あなたはmaxまたはmin(単にインデックス)を必要としません。また、索引1(2番目の要素)から比較を開始する必要があります。最後に、ループの後に2つのインデックスの値を入れ替えることができます。同様に、

int maxIndex = 0, minIndex = 0; 
for (int counter = 1; counter < integers.length; counter++) { 
    if (integers[counter] > integers[maxIndex]) { 
     maxIndex = counter; 
    } 
    if (integers[counter] < integers[minIndex]) { 
     minIndex = counter; 
    } 

} // end loop 
int t = integers[maxIndex]; 
integers[maxIndex] = integers[minIndex]; 
integers[minIndex] = t; 
System.out.println(integers[maxIndex]); 
System.out.println(integers[minIndex]); 
+0

私はコードが正しく動作すると信じている間、私はそれが元のポスターをheplsどのくらいの疑いがあります。私は質問のコード内の問題を修正するのに役立つ答えを見たいと思う。 –

+0

@ OleV.V。私は質問からコードを取り出し、OPはmaxIndexまたはminIndexを設定(または使用)していませんでした。それらがなければ、配列の2つの要素を入れ替えることはできません。 –

+0

おかげです、あなたは私に何かを教えてくれました。次回は、コードなしで "あなたが書いた"という言葉で何をすべきか教えてください。ありがとう – Fawaz

0

あなたは、ソートalgorithm.Hereを使用することができます私は、インデックス0の要素が最小となり、配列の最後のインデックスが最大となり、その後、あなたはそれらを交換することができますソートsort.Afterバブルを使用:

BufferedReader rd=new BufferedReader(new InputStreamReader(System.in)); 

    try{ 

     int n=Integer.parseInt(rd.readLine()); 

     String[] s=rd.readLine().split(" "); 

     int[] num=new int[n]; 

     for(int i=0;i<n;i++){ 
      num[i]=Integer.parseInt(s[i]); 

     } 




     int temp=0; 
     //bubble sort 
     for(int i=0;i<n-1;i++){ 


      for(int j=0;j<n-1-i;j++){ 

       if(num[j]>num[j+1]){ 
        temp=num[j]; 
        num[j]=num[j+1]; 
        num[j+1]=temp; 
       } 
      } 
     } 

     //swapping max and min 
     temp=num[0]; 
     num[0]=num[n-1]; 
     num[n-1]=temp; 


    } 
    catch(Exception e){ 
     e.printStackTrace(); 

    } 
+0

これは事を過度に複雑にしているようです。 –