2017-04-20 65 views
-2

我正在創建一個程序,要求用戶輸入十個數字,然後輸出最小和最大的數字。這是我的代碼:使用索引的最小和最大數字數組?

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 

我遇到的問題是當數字輸出時,它給我0作爲最小和9作爲最大。我知道這是因爲10數組數組,但如何固定顯示最小整數和最大整數?

+2

你認爲什麼是錯的,你做了什麼來調試它? – ergonaut

+0

提示提示最小=我?我在那裏? – brad

+1

@brad'i'是數組中的一個*值*,因爲循環是增強的for循環,而不是正常的循環索引。 – Andreas

回答

0

numbers = new int[10];

上面的語句初始化全0陣列,因爲你要分配給numbers[0]smallest,它永遠是0

此外,achieveing此的另一種方式則是使用Java 8的stream,如:

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

把這一行:

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

下面這一行:

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

你正在初始化「最小」爲0,因爲你的數組還沒有任何值。除非用戶輸入負數,否則最小值將始終爲零。