Java中的二维数组分配



在Java中执行小任务:

你正在为一个20人的班级给10个作业打分。编写一段代码,创建并初始化一个适当的数组。出于本练习的目的,可以为它们指定所有相同的点。你意识到你在评分上犯了一个错误,需要在作业7中给每个人记0.5分。为此编写适当的片段。打印每个学生每次作业的成绩。你的输出应该包括学生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;
        }   

我知道我需要再做一次双循环来完成序列,最终输出三个值,但我不确定具体是什么,因为我不能再做原来的双循环了。

任务7 每人得0.5分

这个

for (int assignment = 6; assignment < 10; assignment++); {
    grades[student][6] += 0.5;
}

不会像作业要求你做的那样。假设这是循环的内部优先,尽管你缺少了一个}),缩进很奇怪;这将改变学生7年级(指数6)10-6=4的次数,这将为每个学生增加(10-6)*0.5=2分,但作业要求只添加0.5。你应该删除提到的for循环,因为它不需要,只保留你添加分的主体逻辑。

你的输出应该包括学生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. 使所有的数字(10,20)保持不变。标准形式为private static final int ASSIGNMENT_COUNT = 10;
  2. 使每个单独的步骤(分配、调整、输出)都成为单独的方法。这将清楚地表明,它们是单独的步骤
  3. 使用6.0F作为浮点常量。这清楚地表明了它是一个浮动,并消除了对铸造的需要
  4. for循环中,将迭代变量与array.length进行比较,这样更安全,也更清楚地表明您要做什么

我的猜测是,如果你使用上面的步骤(尤其是第二步)重构你的代码,你下一步需要做什么会更清楚。

最新更新