2015-05-19 135 views
-2

編寫一個總是要求用戶輸入一個數字的程序。當用戶輸入負數-1時,程序必須停止請求用戶輸入一個數字。然後該程序必須計算輸入的數字的平均值,不包括-1。利用while循環重複結構來實現程序。循環中的Java編程

這是我的解決方案,但問題是我不能排除總和中的負數。請幫助

Import javax.swing.*; 
public class whileloop 
{ 
    public static void main (String [] args) 

    { 
     int i =0, tot = 0; 
     int count = 0; 
     double avg = 0.0; 
     while(i != -1) 
     { 
      i = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a number"); 
      if(i != -1) 
      { 
       tot += i; 
       count++; 
       avg = sum/count; 
       System.out.println("Sum: " + sum + "\t\t" + "Average: " + avg); 
      } 
     } 
     System.out.println(); 
    } 
} 
+0

如果不保存'-1',你不必去關心 – fantaghirocco

+1

這是您的原碼? 'sum'沒有被宣佈,你的意思是'tot'? –

回答

0
Import javax.swing.*; 
    public class whileloop 
    { 
     public static void main (String [] args) 



     { 
      int i =0, tot = 0; 
      int count = 0; 
      double avg = 0.0; 
      while(true) 
      { 
      i = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a number"); 
      if(i != -1) 
      { 
       tot += i; 
       count++; 

      }else{ 
      avg = tot/count; 
       System.out.println("Sum: " + tot+ "\t\t" + "Average: " + avg); 
break; 
     } 
     } 
     System.out.println(); 
    } } 
0
Import javax.swing.*; 
public class whileloop{ 
    public static void main (String [] args) { 
    int i =0, tot = 0; 
    int count = 0; 
    double avg = 0.0; 
    while(i >= 0){ 
     i = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a number"); 
     if(i >= 0){ 
     tot += i; 
     count++; 
     } 
    } 
    avg = sum/count; 
    System.out.println("Sum: " + sum + "\t\t" + "Average: " + avg); 
} 

簡稱:

while (bigger then 0){ 
    read number 
    check if positive number{ 
    add number tot total for the average 
    } 
} 
calculate average 
print average result 

你也想的平均值計算是while循環更好的可讀碼之外。

0

首先,你爲什麼要使用JOptionPane並讓你的生活更難?沒有必要使用JOptionPane來完成這樣簡單的任務。其次,平均值的計算應該在while循環之外。如果將其保留在內部,則由於計算問題,您可能會冒着程序拋出運行時異常的風險。這裏是你的代碼應該看起來像從while循環到println語句。我清理了你的代碼,以便更簡化。

while (i > 0) { 
    tot += i; 
    count++; 
} 

int average = tot/count; 
System.out.println("Sum: " + sum + "\t\t" + "Average: " + avg); 
0

你所描述的在邏輯上是正確的,即它滿足你的要求。

,我看到的唯一問題是:

  1. 您在每次迭代(非必要)打印sum和avg。
  2. 計算平均值時,您應該將總和加倍(請參閱this post)。
  3. 您應該使用tot而不是未定義的sum(作爲陀螺儀Gearless評論)。

因此,我建議的解決方案(假設你需要的圖形)是:

Import javax.swing.*; 
public class whileloop 
{ 
    public static void main (String [] args) 

    { 
    int i =0, tot = 0; 
    int count = 0; 
    double avg = 0.0; 
    while(i != -1) 
    { 
     i = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter a number"); 
     if(i != -1) 
     { 
      tot += i; 
      count++;    
     } 
    } 
    avg = (double)tot/count; 
    System.out.println("Sum: " + tot + "\t\t" + "Average: " + avg); 
    } 
}