Java中的二维数组赋值

时间:2015-02-12 22:29:08

标签: java arrays 2d

在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;
        }   

我明白我需要做另一个双循环来完成序列以最终输出三个值,但我不确定究竟是什么因为我不能再做原始的双循环。

2 个答案:

答案 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)

我想为您提供一些建议供您使用(或不使用):

  1. 制作所有数字(10,20)常数。标准格式为private static final int ASSIGNMENT_COUNT = 10;
  2. 使每个单独的步骤(分配,调整,输出)分开的方法。这将清楚表明它们是分开的步骤。
  3. 使用6.0F作为浮点常量。这清楚地表明它是一个浮动并且不需要演员。
  4. 在您的for循环中将您的迭代变量与array.length进行比较 - 这样更安全,并使您更清楚自己想要做什么。
  5. 我的猜测是,如果你使用上面的步骤(特别是第二步)重构你的代码,那么接下来你需要做的就更清楚了。