Java练习题目3:输入一个学生的5门课成绩及对应的学分,计算该同学的加权平均分(WeightedAverageScore3)

每日小语

我们没有意识到惯用语言的结构有多大的力量。可以说,它通过语义反应机制奴役我们。

                                                                                                              ——阿尔弗雷德·科日布斯基

思考

输入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();
	}
}

撒花花~

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值