A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 田旭阳 于 2012-9-16 10:35 编辑

import java.awt.*;

import javax.swing.*;

public class Test7_38 {

public static void main(String[] args) {
  double scorse[] = new double[100];
  int count = 0;
  double sum = 0, ave = 0;
  int CountMin = 0, CountMax = 0;
  double result = Double.parseDouble(JOptionPane.showInputDialog(null,
    "请输入一个分数:"));
  while (result > 0) {   

   scorse[count] = result;
   count++;
  System.out.println(""+scorse[count]+"   "+count);
   sum=sum+scorse[count];   //为什么这条语句在这里没有执行呢?
   ave=sum/count;           //为什么这条语句在这里没有执行呢?

   if ((ave > 0) && (ave < scorse[count])) CountMin++;
   if ((ave > 0) && (ave > scorse[count])) CountMax++;
   if (result < 0) break;
   result = Double.parseDouble(JOptionPane.showInputDialog(null,
   "请输入一个数:"));
  }
  
  
  for (int i = 0; i < count; i++)
   System.out.print(scorse + "    ");

  System.out.println("sum="+sum);
  System.out.println(" Average="+ave);
  System.out.println("平均分以上的有"+CountMax+"人,平均分以下的有"+CountMin+"人");
}
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 小细节的问题多运行几遍,希望下次能自己找.

查看全部评分

3 个回复

正序浏览
import java.awt.*;

import javax.swing.*;

public class Test7_38 {

public static void main(String[] args) {
  double scorse[] = new double[100];
  int count = 0;
  double sum = 0, ave = 0;
  int CountMin = 0, CountMax = 0;
  double result = Double.parseDouble(JOptionPane.showInputDialog(null,
    "请输入一个分数:"));
  while (result > 0) {   

   scorse[count] = result;
   count++;//在此count=count+1;
  System.out.println(""+scorse[count]+"   "+count);//[color=Red]每次执行到这里时,你所取的其实是score[count+1]但是此时的score[count+1]中还没放入值为0,并不是取的你已经放入值的score[count]。所以下边的语句是已经执行了不过是执行的0+0=0
sum=sum+scorse[count];   
   ave=sum/count;           
   if ((ave > 0) && (ave < scorse[count])) CountMin++;
   if ((ave > 0) && (ave > scorse[count])) CountMax++;
   if (result < 0) break;
   result = Double.parseDouble(JOptionPane.showInputDialog(null,
   "请输入一个数:"));
  }
  
  
  for (int i = 0; i < count; i++)
   System.out.print(scorse + "    ");

  System.out.println("sum="+sum);
  System.out.println(" Average="+ave);
  System.out.println("平均分以上的有"+CountMax+"人,平均分以下的有"+CountMin+"人");
}
}
其实你在碰到问题自己多运行几遍,想一想就会有答案的

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 新人回帖 多多鼓励

查看全部评分

回复 使用道具 举报
那两句代码肯定是执行了的,只是你代码的逻辑出问题了,所以没有达到你想要的效果,我对楼主的程序做了一些改动,你参考一下吧
import java.awt.*;

import javax.swing.*;

public class Test7_38 {

        public static void main(String[] args) {
                double scorse[] = new double[100];
                int count = 0;
                double sum = 0, ave = 0;
                int CountMin = 0, CountMax = 0;
                double result = Double.parseDouble(JOptionPane.showInputDialog(null,
                                "请输入一个分数:"));
                while (result > 0) {
                        scorse[count] = result;
                        System.out.println("" + scorse[count] + "   " + count);
                        sum = sum + scorse[count]; // 为什么这条语句在这里没有执行呢?
                        count++;
                        if (result < 0)
                                break;
                        result = Double.parseDouble(JOptionPane.showInputDialog(null,
                                        "请输入一个数:"));
                }
                        ave = sum / count; // 为什么这条语句在这里没有执行呢?
                       
                for (int i = 0; i < count; i++){
                        if ((ave > 0) && (ave < scorse[i]))
                                CountMin++;
                        if ((ave > 0) && (ave < scorse[i]))
                                CountMax++;
                        System.out.print(scorse[i] + "   ");//System.out.print(scorse + "    ");
                }
                System.out.println("sum=" + sum);
                System.out.println(" Average=" + ave);
                System.out.println("平均分以上的有" + CountMax + "人,平均分以下的有" + CountMin + "人");
        }
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 新手回帖 多多鼓励

查看全部评分

回复 使用道具 举报
  1. scorse[count] = result;//scorse[0] = result
  2.    count++;//0变1
  3.   System.out.println(""+scorse[count]+"   "+count);//打印的scorse[1],值为0
  4.    sum=sum+scorse[count];   //执行了,只不过是0 + 0 = 0;
  5.    ave=sum/count;           //执行了,只不过是0/1 = 0;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马