每日小语
我们没有意识到惯用语言的结构有多大的力量。可以说,它通过语义反应机制奴役我们。
——阿尔弗雷德·科日布斯基
思考
输入5门课成绩,学分,加权平均分公式
[(课程A成绩*课程A学分)+(课程成绩B*课程B学分)+……(课程成绩X*课程X学分)]/总课程学分。
这个当然可以慢慢输入,但我突然想到老师要考察循环。
一到循环我就死翘翘。。。
这个似乎得用数组比较好,但我忘记了。
自己敲写
import java.util.Scanner;
public class WeightedAverageScore3
{public static void main(String[] args){double grade;double score;//输入5门课的成绩for(int num = 0;num<6;num++)//num的范围仅仅在for循环体内System.out.println("第"+num+"门成绩");Scanner scanner = null;grade=scanner.nextDouble();//输入5门课的学分double TotalScore;for(int a = 0;a<6;a++);String a = null;System.out.println("第"+a+"门学分");Scanner scanner1 = null;score=scanner1.nextDouble();TotalScore = score++;//总学分//计算加权平均分double WeightedAverageScore;WeightedAverageScore = ;//输出数据System.out.println("加权平均分为:"+ WeightedAverageScore);}
}
问题有,如何把循环出的每一次结果保存到一个单独的地方,方便应用。
还是得用数组,行记为学分,列记为成绩。
import java.util.Scanner;
public class WeightedAverageScore3
{@SuppressWarnings("null")public static void main(String[] args){double[] grade = null;double[] score = null;//输入5门课的学分int num;for(num = 0;num<6;num++)//n的范围仅仅在for循环体内System.out.println("第"+num+"门学分");@SuppressWarnings("resource")Scanner scanner = new Scanner(System.in);grade[num]=scanner.nextDouble();//输入5门课的成绩int a;for(a = 0;a<6;a++);System.out.println("第"+a+"门成绩");Scanner scanner1 = new Scanner(System.in);score[a]=scanner1.nextDouble();//计算总学分@SuppressWarnings("unused")double TotalScore;int b;for(b = 0;b<6;b++)TotalScore = grade[num]++;//计算加权平均分double WeightedAverageScore;WeightedAverageScore = ((grade[0]*score[0])+(grade[1]*score[1])+(grade[2]*score[2])+(grade[3]*score[3])+(grade[4]*score[4]));//输出数据System.out.println("加权平均分为:"+ WeightedAverageScore);}
}
这个问题很诡异,我的想法是它每循环一下,我输入一个值,然后再下一次,可它全都出来了。。。。
import java.util.Scanner;
public class WeightedAverageScore3
{@SuppressWarnings("null")public static void main(String[] args){double[] grade = null;double[] score = null;Scanner scanner = new Scanner(System.in);//提到循环体外//输入5门课的学分int num;for(num = 0;num<5;num++){//n的范围仅仅在for循环体内System.out.println("第"+num+"门学分");grade[num]=scanner.nextDouble();}//输入5门课的成绩int a;for(a = 0;a<5;a++){System.out.println("第"+a+"门成绩");score[a]=scanner.nextDouble();}//计算总学分@SuppressWarnings("unused")double totalScore=0;//设定初始值int b;for(b = 0;b<5;b++)//从0开始{totalScore += grade[b];}//计算加权平均分double WeightedAverageScore;WeightedAverageScore = ((grade[0]*score[0])+(grade[1]*score[1])+(grade[2]*score[2])+(grade[3]*score[3])+(grade[4]*score[4]));//输出数据System.out.println("加权平均分为:"+ WeightedAverageScore);scanner.close();}
}
emmm,还是不对头,不过快要睡觉了唉。
重新看了一下,问题在于grade这些必须创建为一个对象,要不然传不入数据。
终极代码
//输入一个学生的5门课成绩及对应的学分,计算该同学的加权平均分
import java.util.Scanner;
public class WeightedAverageScore3
{public static void main(String[] args){double[] grade = new double[5];//必须创建新的对象,要不然会报错double[] score = new double[5];Scanner scanner = new Scanner(System.in);//提到循环体外//输入5门课的学分int num;for(num = 0;num<5;num++){//n的范围仅仅在for循环体内System.out.println("第"+num+"门学分");grade[num]=scanner.nextDouble();}//输入5门课的成绩int a;for(a = 0;a<5;a++){System.out.println("第"+a+"门成绩");score[a]=scanner.nextDouble();}//计算总学分@SuppressWarnings("unused")double totalScore=0;//设定初始值int b;for(b = 0;b<5;b++)//从0开始{totalScore += grade[b];}//计算加权平均分double WeightedAverageScore;WeightedAverageScore = ((grade[0]*score[0])+(grade[1]*score[1])+(grade[2]*score[2])+(grade[3]*score[3])+(grade[4]*score[4]));//输出数据System.out.println("加权平均分为:"+ WeightedAverageScore);scanner.close();}
}
撒花花~