黑马程序员技术交流社区

标题: 为什么这条语句在这里没有执行呢?请大家帮忙 [打印本页]

作者: 田旭阳    时间: 2012-9-15 21:13
标题: 为什么这条语句在这里没有执行呢?请大家帮忙
本帖最后由 田旭阳 于 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+"人");
}
}
作者: 张 涛    时间: 2012-9-15 21:28
  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;
复制代码

作者: 柏占肖    时间: 2012-9-15 23:32
那两句代码肯定是执行了的,只是你代码的逻辑出问题了,所以没有达到你想要的效果,我对楼主的程序做了一些改动,你参考一下吧
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 + "人");
        }
}
作者: 史小兵    时间: 2012-9-16 10:14
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+"人");
}
}
其实你在碰到问题自己多运行几遍,想一想就会有答案的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2