簡體   English   中英

使用for循環查找最大值和最小值

[英]Find a maximum and minimum value using for loop

我試圖從用戶的輸入中獲取10個整數,並使用for循環找到最小值和最大值。 但是我的最終打印語句只是打印輸入的數字列表。 我迷路了。

public static void main(String[]args) {

   Scanner scan=new Scanner(System.in);
   double a = 0;
   double max = 0;
   double min = 0;

   System.out.print("Enter ten floating points: \n");

   for(a=0; a <10; a++) {
      a=scan.nextDouble();

       if(a == 0) { 
           min=a;
           max=a; 
       } 
       else if(a < min) {
           min=a; 
       }
       else if (a > max){ 
           max=a; 
       }
   }
   System.out.println("Minimum value: " +min);
   System.out.println("Maximum value: " +max);
}

問題在您的for循環中將其更改為

for (int x = 0; x < 10; x++) {

還有另一個問題,你需要改變

if(a == 0){

if (x == 0) {

首先,由於您使用與計數器相同的變量a和存儲用戶輸入的變量,因此代碼不應正確運行。 您應該使用兩個不同的變量。

第二個聲明您的變量,該變量將用戶的輸入存儲在循環內,否則它可能會保留上一個循環中的值。

第三,當用戶輸入數字0時, if(a == 0)條件將重置minmax 。這不是您想要的。

最后,您不應該像這樣初始化max / min。 通過將min定義為0,如果用戶僅輸入正數,則min將為0,但用戶從未輸入0。您可以在用戶的​​第一項輸入中將其初始化。

看起來應該像這樣:

public static void main(String[]args) {

    Scanner scan=new Scanner(System.in);

    System.out.print("Enter ten floating points: \n");
    double tmp = scan.nextDouble(); //read first number from user

    double max = tmp; //intialize with the first input
    double min = tmp;

    for(int i=0; i <9; i++) { //from 0 to 8, 9 numbers since the first has already been read
        double a = scan.nextDouble(); //at every loop read a number from the input
        if(a < min) {
            min=a;
        }
        //removed else since max and min are independant
        if (a > max) {
            max=a;
        }
    }
    System.out.println("Minimum value: " +min);
    System.out.println("Maximum value: " +max);
}

嘗試這個

    Scanner scan=new Scanner(System.in);
    int maximum = Integer.MIN_VALUE;
    int minimum = Integer.MAX_VALUE;
    for( int i=0; i<10 &&  scan.hasNextInt(); i++ ) {
        int next = scan.nextInt();
        maximum = Math.max( next, maximum);
        minimum = Math.min( next, minimum);
    }
    System.out.println("Found maximum :"+maximum+", minimum:"+minimum);
    scan.close();

首先,我們創建掃描儀。 接下來,我們為您的最大值設置一個值-由於整數可以為負,因此我們不能使用0,而必須使用最小的整數。 最低限度相同。

在for循環中,我們必須確保在10次迭代后終止輸入循環,或者如果輸入流中不再有int循環,則終止循環。

接下來,我們使用數學函數max找出最大的數字-先前找到的最大數,或Scanner中的下一個整數。 最少也一樣。

最后,請記住關閉掃描儀,以避免資源泄漏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM