2016-09-22 6 views
0
import java.util.Scanner; 
public class Swap { 
    public static void main(String[]args){ 
     Scanner kb = new Scanner(System.in); 
     System.out.print("How many integers? "); 
     int size = kb.nextInt(); 

     int[] values = new int[size]; 
     System.out.println("Enter integers:"); 

     for (int i = 0;i < size; i++){ 
      values[i] = kb.nextInt(); 
     } 
     int min = values[0]; 
     for(int i = 0;i < values.length;i++){ 
      if(values[i] < min){ 
       min = values[i]; 
      } 
     } 
     int max = values[0]; 
     for(int i = 0;i < values.length;i++){ 
      if(values[i] > max){ 
       max = values[i]; 
      } 
     }   
    } 
} 

ich gerade bin immer auf eine kleine Sache gefangen: Ich weiß nicht, wie die Lage der Min- und Max zu extrahieren, wie in dem Index von ihnen in um sie zu tauschen. Ich versuchte ursprünglich etwas nach den Werten [min], aber ich denke, Java hält nicht Ihre Hand so viel, was verständlich istbenötigen in Java zwei Elemente in einem Array tauschen

+0

'min und max' würden die tatsächlichen Werte sein ... Sie müssten die' I' sparen Variable in jeder dieser Schleifen, um sie zu tauschen. wie "minIndex = i" und "maxIndex = i". Wo sind deine Werte? – 3kings

Antwort

0

Derzeit speichern Sie in min und max das Ergebnis einer Berechnung. Von OOD ist das schlecht, da sich die Werte im Array zwischenzeitlich ändern können und Ihnen einen ungültigen Zustand geben.

Statt min und max sollten Sie den minIndex und maxIndex speichern. Eine Schleife könnte wie folgt aussehen:

int maxIndex = 0; 
    for(int i = 0;i < values.length;i++){ 
     if(values[i] > values[maxIndex]){ 
      maxIndex = i; 
     } 
    } 

Jetzt ist es einfach, sie zu tauschen:

int tmp = values[maxIndex]; 
values[maxIndex]=values[minIndex]; 
values[minIndex]=tmp; 
Verwandte Themen