黑马程序员技术交流社区
标题:
为什么这条语句在这里没有执行呢?请大家帮忙
[打印本页]
作者:
田旭阳
时间:
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
scorse[count] = result;//scorse[0] = result
count++;//0变1
System.out.println(""+scorse[count]+" "+count);//打印的scorse[1],值为0
sum=sum+scorse[count]; //执行了,只不过是0 + 0 = 0;
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