2017-04-20 1 views
-2

Ich erstelle ein Programm, das den Benutzer nach zehn Zahlen fragt und dann die kleinste und größte Zahl ausgibt. Dies ist mein Code:Kleinste und größte Anzahl Array mit Index?

import java.util.Scanner; // program uses Scanner 
public class ArrayTester { 
// begin execution 
public static void main(String[] args) { 
    // declare and create array object 
    // declare smallest and largest int variables 
    int[] numbers; 
    numbers = new int[10]; 
    int smallest = numbers[0], largest = numbers[0]; 

    // create Scanner object 
    Scanner input = new Scanner(System.in); 

    // prompt user 
    System.out.print("Please enter 10 numbers: \n"); 
    // use for loop to obtain user input 
    for (int counter = 0; counter < numbers.length; counter++) { 
     numbers[counter] = input.nextInt(); 
    } // end obtaining input 

    // enhanced for loop to find largest and smallest values 
    for (int i : numbers) { 
     if (i < smallest) { 
      smallest = i; 
     } // end finding smallest 
     else if (i > largest) { 
      largest = i; 
     } // end finding largest number 
    } // end finding largest and smallest values 

    // for loop to print user input 
    System.out.printf("%s%8s\n", "Index", "Input"); 
    for (int counter = 0; counter < numbers.length; counter++) { 
     System.out.printf("%5d%8d\n", counter, numbers[counter]); 
    } // end printing input values 

    // print smallest and largest numbers 
    System.out.printf("Smallest number: %d\nLargest number: %d\n", smallest, largest); 

} // end main 
} // end ArrayTester 

Das Problem, das ich habe, ist, wenn die Zahlen ausgegeben, ist es mir 0 als kleinstes und 9 als die größte zu geben. Ich weiß, das ist wegen der 10-Nummer-Array, aber wie wäre es behoben, um die kleinste ganze Zahl und die größte ganze Zahl zu zeigen?

+2

Was denken Sie, ist falsch, und was haben Sie getan, um es zu debuggen? – ergonaut

+0

Hinweis Hinweis kleinste = i? Was bin ich dort? – brad

+1

@brad 'i' ist ein * Wert * vom Array, da die Schleife eine erweiterte 'for'-Schleife ist, kein normaler Index' for' loop. – Andreas

Antwort

0

numbers = new int[10];

Die obige Aussage das Array mit allen 0s initialisiert, da Sie numbers[0]-smallest zuweisen, wird es immer 0 sein.

Auch ein anderer Weg, dies zu achieveing ​​von Java 8 der Verwendung wäre stream, zB:

int[] array = new int[] {1,2,3,10,0}; 
IntSummaryStatistics summaryStatistics = Arrays.stream(array).summaryStatistics(); 
System.out.println(summaryStatistics.getMax()); 
System.out.println(summaryStatistics.getMin()); 
0

diese Zeile hinzu:

int smallest = numbers[0], largest = numbers[0]; 

Unterhalb dieser Linie:

for (int counter = 0; counter < numbers.length; counter++) { 
    numbers[counter] = input.nextInt(); 
} // end obtaining input 

Sie initialisieren "klein" auf 0, weil Ihr Array noch keine Werte hat. Wenn der Benutzer keine negative Zahl eingibt, ist der kleinste Wert immer Null.

Verwandte Themen