在Java中做一个小作业:
您正在为一个20级的课程评分十个作业。编写一段代码来创建和初始化一个合适的数组。出于本练习的目的,您可以为它们分配所有相同的点。你意识到你在评分中犯了一个错误,并且需要将0.5分给所有人分配7。写出适当的段来做这件事。为每个作业打印每个学生的成绩。您的输出应包括学生ID,分配编号和相应的分数。
这是我到目前为止所拥有的:
public static void main (String [] args)
{
float[][] grades = new float[20][10];
for (int student=0; student<20; student++)
{
for (int assignment=0; assignment<10; assignment++)
{
grades[student][assignment] = (float)6.0;
}
for (int assignment=6; assignment<10; assignment++);
{
grades[student][6] += 0.5;
}
我明白我需要做另一个双循环来完成序列以最终输出三个值,但我不确定究竟是什么因为我不能再做原始的双循环。
答案 0 :(得分:0)
为每个人分配0.5分给予任务7
此
for (int assignment = 6; assignment < 10; assignment++); {
grades[student][6] += 0.5;
}
不会像作业要求你那样表现。假设这是在第一个循环内部,虽然你错过了}
)并且缩进很奇怪;这将改变学生的第7(索引6)等级 10 - 6 = 4 次,这将为每个学生添加(10 - 6)* 0.5 = 2 分,但是赋值要求只添加 0.5 。你应该删除提到的循环,因为它不需要,只保留正文 - 你添加点的逻辑。
您的输出应包括学生ID,分配编号和相应的分数。
如果我理解这一点,你必须为每个学生的每个作业打印以下行:
{student id} {assignment id} {assignment points}
要执行此操作,在您现在应该修复的行之后,添加以下内容:
for (int assignment=0; assignment<10; assignment++) {
System.out.printf("%d %d %d", student, assignment, grades[student][assignment]);
}
循环几乎与您添加分数的循环相同,但问题是您必须在打印结果之前修复分配号7,因此您不能只在同一循环中进行打印。
答案 1 :(得分:0)
我想为您提供一些建议供您使用(或不使用):
private static final int ASSIGNMENT_COUNT = 10;
6.0F
作为浮点常量。这清楚地表明它是一个浮动并且不需要演员。for
循环中将您的迭代变量与array.length
进行比较 - 这样更安全,并使您更清楚自己想要做什么。我的猜测是,如果你使用上面的步骤(特别是第二步)重构你的代码,那么接下来你需要做的就更清楚了。