2014-02-21 396 views
0

我正在尝试做下面的java任务,除了当我把一个数字< 4或> 10打印出“无效的成绩! “你没有输入任何数据!”我想要的只是打印“无效等级!”我试图解决它,但我不能。任何人都可以帮助我吗?java计算平均值

感谢,

分配: 创建一个程序,询问考试的结果,并计算成绩的平均平均值。等级是4到10之间的浮点数。程序要求等级,直到输入负数。如果用户给出的分数不等于4到10之间的一个数字,则文字“无效分数!”将被打印在屏幕上,并且程序要求另一个分数。最后,程序在屏幕上打印输入等级的数量和平均值,如示例打印中所示。如果没有输入等级,则通知“您没有输入任何等级”是屏幕上唯一打印的内容。

提示:双类型变量将用于存储平均值。

程序写入名为Average的类。

示例输出

程序计算输入等级的平均值。 用一个负整数结束。前一秒,如果

Input a grade (4-10): 5 
Input a grade (4-10): 6,5 
Input a grade (4-10): 7,5 
Input a grade (4-10): 7 
Input a grade (4-10): 0 
Invalid grade! 
Input a grade (4-10): -4 

4 grades inputted. 

Average of the grades: 6.5 

代码

import java.util.Scanner; 
public class apples { 

    public static void main(String[] args) { 

     int inputNumber=0; 
     int sum;   
     int count;   
     double average;  



     sum = 0; 
     count = 0; 


     Scanner reader = new Scanner(System.in); 
     System.out.println("Program calculates the average of inputted grades."); 
     System.out.println("Finish with a negative integer."); 
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 


     while (inputNumber > 0 && inputNumber>=4 && inputNumber<=10) { 
     sum += inputNumber; 
     count++;    
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 

     } 

     if (inputNumber<4 || inputNumber>10) { 
      System.out.println("Invalid grade!"); 
     } 

     if (count==0) { 
      System.out.print("You didn't enter any data!"); 
     } 
     else { 
     average = ((double)sum)/count; 
     System.out.println(); 
     System.out.println(count + " grades inputted."); 
     System.out.print("Average of the grades: "+ average); 
     } 

    } 

} 
+0

添加一个'返回;'入'if'。 –

回答

0

是的,if - else将在这里帮助,但你把它放在哪里也很重要。

while (inputNumber > 0) { 
     if (inputNumber<4 || inputNumber>10) { 
      System.out.println("Invalid grade!"); 
     } else { 
      sum += inputNumber; 
      count++; 
     } 
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 
    } 
+0

Thanks Dan,我根据你的建议编辑了我的代码,但输出结果不一样,当我输入0时,它告诉我“你没有输入任何数据!我想要的是出成为“你没有输入任何数据!”,并继续要求更多的成绩。再次感谢你。 – user3314727

+0

将while条件更改为'inputNumber> = 0'这将打印“无效成绩”,然后提示您换取其他成绩。 –

3

把一个别人在,因此,如果第一个是不是只是做:

if (inputNumber<4 || inputNumber>10) { 
    System.out.println("Invalid grade!"); 
} else if (count==0) { 
    System.out.print("You didn't enter any data!"); 
} 
0

当你与一个完成负整数inputNumber将始终小于4所以

if (inputNumber<4 || inputNumber>10) { 
     System.out.println("Invalid grade!"); 
    } 

总是如此。

将其更改为以下(稍微容易读):

do {  
     System.out.print("Input a grade (4-10): "); 
     inputNumber = reader.nextInt(); 
     if (inputNumber<4 || inputNumber>10) { 
     break ; // 
     } 
    sum += inputNumber; 
    count++;    


    }while (count <= 4) { 

    if (count==0) { 
     System.out.print("You didn't enter any data!"); 
    } 
+0

Aha:错过了最初的要求:“如果用户给出的分数不是4到10之间的一个数字,则文字”无效分数!“将被打印在屏幕上,程序会要求另一个分数。“所以休息时间应该被继续替代或者保持循环,并且看到Don Temple的解决方案 – user3336961

+0

Dan的建议有一点:如果你输入0作为第一年级,它不会进入循环:改变算法为do -while'做{ 读取输入 如果(负) 断裂 如果(4-10) 过程总和和计数 别的 消息 }而(一些条件(也许计数<= 4)) 如果( count == 0) ....' – user3336961

0

由于这是一个任务,我宁愿给你一个线索,而不是答案..

有亲密看看你的while循环 - 它永远不会被输入。 这意味着输入时计数为0,例如3.在执行时,您正在满足两个条件,这意味着两行都正在打印。您需要修改代码以确保满足(或达到)其中一个或其他条件,但不能同时满足这两个条件。

-1
import java.util.Scanner; 

public class Average { 
    public static void main(String[] args) { 
     int total = 0; 
     double number_sum = 0, number_entered = 0, avg = 0; 
     Scanner reader = new Scanner(System.in); 
     System.out 
       .print("Program calculates the average of inputted grades. \nFinish with a negative integer.\n\n"); 
     do { 
      System.out.print("Input a grade (4-10): "); 
      number_entered = reader.nextDouble(); 
      if (number_entered <= 10 && number_entered >= 4) { 
       number_sum = number_sum + number_entered; 
       total++; 
      } 
      if (number_entered == 0 || number_entered < 4 
        || number_entered > 10) { 

       System.out.print("Invalid grade!"); 
       System.out.print("\nInput a grade (4-10): "); 
       number_entered = reader.nextDouble(); 
      } 
      if (number_entered < 0) { 
       if (total == 0) { 
        System.out.print("You did not input any grades."); 
       } else { 
        avg = number_sum/total; 
        System.out.print(total + " grades inputted.\n"); 
        System.out.print("Average of the grades: " + avg); 
       } 
      } 
     } while (number_entered > 0); 
    } 
} 
+0

1)请不要只给人们代码,给他们指点。 2)请格式化您的代码。 –