每日小语
我们没有意识到惯用语言的结构有多大的力量。可以说,它通过语义反应机制奴役我们。
——阿尔弗雷德·科日布斯基
思考
输入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();
}
}
撒花花~