2016-04-05 20 views
1

So wurde ich beauftragt, einen Code zu erstellen, der eine vordefinierte Array-Liste für Benutzer erstellt, bis zu mehr als 100 Ganzzahlen mit der Option 0 zu verwenden, um anzugeben sobald sie mit ihren Eingaben fertig sind. Wenn Sie jedoch versuchen, den Mindestwert anzugeben, wird nur der Wert 0 zurückgegeben. Wie würde ich ihn richtig formatieren, um ihn mit dem gesamten Wert in der vom Benutzer eingegebenen Array-Liste zu vergleichen? Schätze jede Hilfe, die ich bekommen kann! Ich fügte Kommentare auf der Seite hinzu, um zu zeigen, in welchen Bereichen ich Fragen habe oder wo ich glaube, dass der Fehler liegt.Suchen der minimalen und maximalen Werte in einem Benutzer inputed Array (Java)

public static void main(String[] args) { 

Scanner TextIO = new Scanner(System.in); 
    String calc; 

      double[] numbers2; //An array for storing double values. 
      int[] numbers; // An array for storing the int values. 
      int count;  // The number of numbers saved in the array. 
      int num;  // One of the numbers input by the user. 
      int max; 
      int min; 

/* Initialize the summation and counting variables. */ 

      numbers2 = new double[100]; // Space for 100 doubles. 
      numbers = new int[100];  // Space for 100 ints. 
      count = 0;     // No numbers have been saved 
      max = Integer.MIN_VALUE; //Properly initialized? 
      min = Integer.MAX_VALUE; //Properly initialized? 

/*Start of min method. */ 

if (calc.equals("min")){ 
    System.out.println("Enter up to 100 positive integers; 

    while (true) { // Get the numbers and put them in the array. 
     System.out.print("-> "); 
     num = TextIO.nextInt(); 

    if (num <= 0) { 
     break; }    /*Zero marks the end of the input. All     
           have been inputted. */ 

    else { 
     numbers[count] = num; // Put num in position count. 
     count++; 
        } 

    for (int i=0; i<numbers.length;i++) { //"For" statement needed here? 
      if (numbers[i] < min) { 
       min = numbers[i];}   
             } 

    } 

     System.out.println("Your minimum is : " + min); 
    } 
}     
}     
+0

* bis zu mehr als 100 * - was bedeutet das ?? – shmosel

+0

Nur ein Gedanke, Sie können auch min und max zuweisen, um das erste Element in Ihrem Array zu sein, aber ich denke, MIN und MAX wird auch funktionieren. –

+0

'int [100]' hat Platz für 101 ganze Zahlen. – shmosel

Antwort

2

Ihre for Schleife, die die minimale findet sollte nach der while-Schleife, die die Eingabe liest, in ihm nicht (da zur Zeit geht es über nicht initialisierten Elemente des Arrays, so dass es findet immer eine 0 als Minimum). Wenn Sie das tun, sollten Sie auch die for-Schleife so ändern, dass nur die Elemente durchlaufen werden, die Sie dem Array zugewiesen haben (Indizes 0 bis count-1), und nicht das gesamte Array.

Alternativ können Sie die for-Schleife entfernen und einfach den

 if (numbers[count-1] < min) { 
      min = numbers[count-1]; 
     } 

Zustand innerhalb der while-Schleife. Dies wird das Minimum in der gleichen Schleife finden, die den Eingang liest. Natürlich, wenn Sie das tun, müssen Sie die Elemente in einem Array überhaupt nicht speichern, damit Sie den Code weiter vereinfachen können.

Hier ist eine mögliche Lösung die die Anordnung hält und die for-Schleife:

while (count < numbers.length) { // avoid too many inputs 
    System.out.print("-> "); 
    num = TextIO.nextInt(); 

    if (num <= 0) { 
     break; 
    } else { 
     numbers[count] = num; 
     count++; 
    } 
} 
for (int i=0; i<count;i++) { 
    if (numbers[i] < min) { 
     min = numbers[i]; 
    }   
} 
+0

Ok Ich habe meinen Code geändert, aber er gibt mir immer noch den Wert 0 zurück. Denkst du, dass es vielleicht damit zu tun hat, dass ich meine Variablen für Max und Min nicht richtig initialisiert habe? Meine Variablen sind: {max = Integer.MIN_VALUE; \t \t \t min = Integer.MAX_VALUE;} – olmost21

+0

Geben Sie bis zu 100 positive Ganzzahlen ein; Geben Sie 0 ein, um zu beenden. -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> 10 -> 0 Ihr Minimum ist: 0 – olmost21