2015-05-19 134 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); 
    } 
}