2017-03-29 25 views
0

我對Java編程(2周)非常陌生,目前正在練習數組。如何使用Java在for循環中一次輸出多個數字

我的代碼如下:

import java.util.Scanner; 

public class LA2_2_1 { 
    public static void main (String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     int x; 
     double avg; 
     double num = 0; 

     System.out.print("Enter the number of items: "); 
     x = scan.nextInt(); 

     int [] numbers = new int [x]; 
     double sum = 0; 
     sum = sum + num;  

     for (int index = 0; index < numbers.length; index++) 
     { 
      System.out.print("Enter the numbers: "); 
      num = scan.nextDouble(); 
      sum = sum + num; 
      System.out.println(sum); 
     } 
     avg = sum/x; 
     System.out.println("The average is " + avg);   
    } 
} 

輸出:

Enter the number of items: 10 

Enter the numbers: 3.4 5 6 1 6.5 7.8 3.5 8.5 6.3 9.5 

3.4 

Enter the numbers: 8.4 

Enter the numbers: 14.4 

Enter the numbers: 15.4 

Enter the numbers: 21.9 

Enter the numbers: 29.7 

Enter the numbers: 33.2 

Enter the numbers: 41.7 

Enter the numbers: 48.0 

Enter the numbers: 57.5 

The average is 5.75 

我的問題是,我怎麼能格式化代碼,使我得到"Enter the numbers"只出現一次?我只想讓程序向用戶詢問他們想要輸入的一系列數字。我不希望它輸出多個「輸入數字」。

我認爲這可能與輸出在for循環內有關,但我不太積極。我試着把它拿出來,「輸入數字」的平均值和輸出都變成了0.0

任何輸入都會有幫助。

謝謝

+0

不清楚。每次您的代碼調用printl時都會打印出來。所以,只需刪除循環中的printl語句就可以防止打印輸出。但是:用戶應該怎麼知道他應該輸入另一個號碼? – GhostCat

回答

0

剛剛從

for (int index = 0; index < numbers.length; index++) 
{ 
    System.out.print("Enter the numbers: "); 
    num = scan.nextDouble(); 
    sum = sum + num; 
    System.out.println(sum); 
} 

更改for環路

System.out.print("Enter the numbers: "); 
for (int index = 0; index < numbers.length; index++) 
{ 
    num = scan.nextDouble(); 
    sum = sum + num; 
} 
System.out.println(sum); 
+0

謝謝!這工作!我想這是我輸入代碼的結構,我會牢記這一點。再一次感謝你! – hav0c

+0

@ hav0c,不客氣。 – VHS

0

每次你for循環運行時,它會打印出的線時間嘛尋找你的代碼

System.out.print("Enter the numbers: "); 

對於多次設置數字量,在這種情況下,10

爲了解決這個問題,你會希望for循環之前添加System.out.print("Enter the numbers: ");

0

它的簡單只是把輸入提示語句外的for循環:

System.out.print("Enter the numbers: "); 

for (int index = 0; index < numbers.length; index++) 
{ 
     num = scan.nextDouble(); 
     sum = sum + num;   
} 
System.out.println(sum); // sum print statement outside loop to get total sum 
+0

這工作。我將不得不更多地練習我的構造。謝謝! – hav0c

0

只需動環外的作品打印語句。請試試這個工作環節以及http://rextester.com/live/ZDRYM2149

class Rextester 
{ 
    public static void main (String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     int x; 
     double avg; 
     double num = 0; 

     System.out.print("Enter the number of items: "); 
     x = scan.nextInt(); 

     int [] numbers = new int [x]; 
     double sum = 0; 
     sum = sum + num;  
     System.out.print("Enter the numbers: "); 
     for (int index = 0; index < numbers.length; index++) 
     { 
      num = scan.nextDouble(); 
      sum = sum + num; 
     } 
     System.out.println("The sum is " + sum); 
     avg = sum/x; 
     System.out.println("The average is " + avg); 

    } 
} 
0

考慮我的回答如果你真學問的數組,因爲在你的代碼,你沒有使用你的陣列

public static void main(String args[]) 
    { 
     //sb object for getting the actual int 
     StringBuilder sb = new StringBuilder(""); 
     Scanner scan = new Scanner(System.in); 
     int x; 
     //this is for the array element of numbers e.g. numbers[y] 
     int y=0; 

     double sum=0; 
     double avg; 
     System.out.print("Enter the number of items: "); 
     x = scan.nextInt(); 
     //please add the scan.nextLine that is why you are getting 
     scan.nextLine(); 
     double[] numbers=new double[x]; 
     System.out.print("Enter the numbers followed by space:"); 
     String numberEntered=scan.nextLine(); 

     for(int i=0;i<numberEntered.length();++i) 
     { 
      //everytime loop iterate new sb with empty value is created 
      sb=new StringBuilder(""); 
       while(i<numberEntered.length()&&numberEntered.charAt(i)!=' ') 
       { 
        //get the actual String integer not containing space 
        sb.append(numberEntered.charAt(i)); 
        ++i; 
       } 
       //convert the String actual integers to integer 
      numbers[y]=Double.parseDouble(sb.toString()); 
      //increment y for the array element of numbers 
       ++y;  
     } 
     //get the sum using foreach loop containing the array of numbers 
     for(double myNumbers:numbers) 
     { 
      sum+=myNumbers; 
     } 

     avg=sum/x; 
     System.out.println("The average is " + avg); 




    } 
相關問題