【问题标题】:How to loop through a 2D array and display an index if a condition is met?如果满足条件,如何循环遍历二维数组并显示索引?
【发布时间】:2016-03-02 00:01:41
【问题描述】:

给定,

Student[] students = new Student[5][7];

并假设每个元素都被赋予了适当的值,编写一个代码段(不是方法),它将在数组中搜索学生 ID 为“123456789”的学生。您应该打印存储学生的位置(行号和列号)。您可以假设 Student 类包含 compareTo 方法。如果调用该方法的对象的 ID 号小于传递给该方法的 Student 的 ID 号,则 compareTo 方法返回小于 0 的值,如果该方法的 Student 的 ID 号则返回大于 0 的值被调用大于传递给方法的学生的 ID 号,如果 ID 号相同,则为 0。

我不确定学生是否真的在比较或使用 compareTo 方法的参数,或者我是否正确地通过循环。任何帮助表示赞赏。到目前为止,我有这个....

Employee temp = new Employee();

for(int i = 0; i < employees.length; i++)
{
    for(int j = 0; j < employees[i].length; j++)
    {
        if(temp.compareTo(employees[i][j]) == 0)
        {
            System.out.println("row " + i + "\ncol " + j);
        }   
    }
}

【问题讨论】:

  • 这就是为什么你有一段时间没有拍电影了。忙着学习如何编程。
  • @Ceelos 哈哈,好一个!编程也不好。

标签: java arrays for-loop multidimensional-array compareto


【解决方案1】:

作业似乎写得不好或不完整。您没有得到检查Student 的ID 的方法,只有比较两个Student 对象的方法,所以您的困惑是可以理解的。

如果有办法创建具有指定 ID 的 Student,您应该这样做(假设有适当的构造函数)

 Student goal = new Student("123456789") 

然后使用compareTo方法将数组中的学生与目标学生进行比较,找到时打印ij的值。

您需要这样做的原因是因为即使“Student 类包含比较 ID 的 compareTo 方法”,也无法将学生的 ID 与给定的 ID 进行比较价值。 IE。没有办法问任何一个问题

“这个学生的 ID 是什么?”

“这个学生的 ID 是否等于 123456789?”

鉴于作业的当前措辞,您可以提出的唯一问题是

“这两个学生的ID是一样的吗?”

“给定两个学生,哪一个的 ID '小'(或'大')?”.

【讨论】:

  • compareTo 方法实际上确实比较了 2 个学生 ID。它只是没有显示。如果调用该方法的 Student 与方法参数中的 Student 具有相同的 ID,则返回 0。因此,由于我给定了一个大小为 [5][7] 的学生二维数组,该数组已经充满了具有随机 ID 的学生,因此我必须以某种方式比较每个学生,直到找到具有相同 ID 的学生。我相信我可能必须先创建一个具有该 ID 的学生才能将其与之进行比较,但即便如此,我也不确定我是否以正确的方式循环并获取每个索引。顺便说一句,感谢您的快速回复。
【解决方案2】:

您不应该比较成对的学生;您应该将每个学生的 ID 与 123456789 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多