当前位置: 代码迷 >> Java相关 >> [求助]高人们看下这个程序
  详细解决方案

[求助]高人们看下这个程序

热度:120   发布时间:2007-09-24 23:43:54.0
[求助]高人们看下这个程序

package achievement;
public class Student {

public static void main(String[] args) {
float mark,marks = 0,high = 0,low = 100;
int n = 0,a = 0,b = 0,c = 0,d = 0,e = 0;
System.out.println("输入成绩,当输入222时结束:");
mark = cs1.Keyboard.readFloat();//这里为给定的一个类cs
while(mark != 222)
{
if(mark>high) high=mark;
if(mark<low) low=mark;
n++;
if(mark<60) a++;
if(mark>=60 && mark<70) b++;
if(mark>=70 && mark<80) c++;
if(mark>=80 && mark<90) d++;
if(mark>=90 && mark<=100) e++;
marks += mark;
if(mark ==222) break;
}
System.out.println("平均分是:" + marks/n);
System.out.println("最高分:" + high);
System.out.println("最低分:" + low);
System.out.println("低于60的人数:" + a + "所占比例:" + a*100/n + "%");
System.out.println("60-70的人数:" + b + "所占比例:" + b*100/n + "%");
System.out.println("70-80的人数:" + c + "所占比例:" + c*100/n + "%");
System.out.println("80-90的人数:" + d + "所占比例:" + d*100/n + "%");
System.out.println("90-100的人数:" + e + "所占比例:" + e*100/n + "%");
}

}

现在一运行后,输入几个数据,然后以222结尾开始计算时,内存就没有响应了........
这是怎么回事?
如果可以,怎么构建当输入一个字符串:end以结束录入成绩.求助

搜索更多相关的解决方案: package  public  color  

----------------解决方案--------------------------------------------------------
while(mark != 222)
{
if(mark>high) high=mark;
if(mark<low) low=mark;
n++;
if(mark<60) a++;
if(mark>=60 && mark<70) b++;
if(mark>=70 && mark<80) c++;
if(mark>=80 && mark<90) d++;
if(mark>=90 && mark<=100) e++;
marks += mark;
if(mark ==222) break;
}
明显矛盾。。。mark!=222才进入循环。。。你在里面又判断mark==222...可能吗???
----------------解决方案--------------------------------------------------------

是的,循环的确有问题


----------------解决方案--------------------------------------------------------
你循环里面的mark的值没有改变,这样你的循环是不会结束的。
while循环最后还要加上 mark = cs1.Keyboard.readFloat()这条语句。
还有你的
if(mark ==222) break;这条语句也没有必要写,因为当mark==222的时候就会程序自动跳出while循环的。
----------------解决方案--------------------------------------------------------
  相关解决方案