2017-03-16 273 views
-1

程序代碼正常工作,除了輸出重複輸入的一些 輸入。我似乎無法弄清楚爲什麼它會重複第一個條目和最後一個條目。程序在輸出中重複輸入

import java.util.Scanner; 

public class ArraySum { 
    public static void main(String[] args) { 
     Scanner scnr = new Scanner(System.in); 
     final int NUM_ELEMENTS = 8;    // Number of elements 
     int[] userVals = new int[NUM_ELEMENTS]; // User input 
     int i = 0;        // Loop index 
     int greaterVal = 0;      // Find greater #'s than 21 

     // Prompt user to populate array 
     System.out.println("Enter " + NUM_ELEMENTS + " integer values..."); 
     for (i = 0; i < NUM_ELEMENTS; ++i) { 
      System.out.println("Value: "); 
      userVals[i] = scnr.nextInt(); 
     } 

     // Determine #'s greater than 21 
     int greaterVal = userVals[0]; 
     System.out.print("#'s greater than 21 are: "); 
     for (i = 0; i < NUM_ELEMENTS; ++i) { 
      if (userVals[i] >= 21) { 
       greaterVal = userVals[i]; 
      } 
      // Code is supposed to only display #'s greater than 21 once 
      System.out.print(" " + greaterVal + " "); 
     } 
     return; 
    } 
} 
+2

你什麼產出和輸出你期望/想要嗎?同時給美國你的輸出 –

+0

它看起來像你要求我們爲你調試你的代碼。這種問題對瀏覽網站的其他人沒有幫助,除非您指定的代碼不按預期工作。您可以使用這些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)來創建[mcve]。 – 4castle

+0

@Jérôme我已經審查過每一個編譯警告,它仍然顯示相同的東西。我對此表示歉意並沒有什麼幫助,並且會繼續使用代碼來獲得正確的輸出結果。我用了3,2,23,258,234,73,27,-2和我回來3 3 230 258 234 73 27 27 –

回答

0
for (i = 0; i < NUM_ELEMENTS; ++i) { 
     if (userVals[i] >= 21) { 
     greaterVal = userVals[i]; 
    } 
    // Code is supposed to only display #'s greater than 21 once 

    System.out.print(" " + greaterVal + " "); 
    } 

格式是非常糟糕的,而這個片段是不正確的。您應該立即打印價值,而不是稍後保存。

+0

是的,明白了:) @borowis –

0

這是因爲您在條件if (userVals[i] >= 21)的外側提及了System.out.print(" " + greaterVal + " ");,那麼爲什麼如果當前值在循環中小於21,並且如果先前值大於21,那麼它將再次輸出先前的值。 更新代碼

for (i = 0; i < NUM_ELEMENTS; ++i) { 
      if (userVals[i] >= 21) { 
       greaterVal = userVals[i]; 
      // Code is supposed to only display #'s greater than 21 once 
      System.out.print(" " + greaterVal + " "); 
      }  
     } 

此外,如果你只需要打印大於21倍的值,那麼你不需要greaterVal變量,你只需要這個

for (i = 0; i < NUM_ELEMENTS; ++i) { 
       if (userVals[i] >= 21) { 
       // Code is supposed to only display #'s greater than 21 once 
       System.out.print(" "+ userVals[i] + " "); 
       }  
      } 
+0

四處移動打印語句,想出了你在你的迴應中提出的建議.... Gracias –

+0

很酷..你也可以在這裏使用每個loop.happy學習 –