我可以阻止我的程序打印重复信息

时间:2014-09-19 20:56:02

标签: java if-statement for-loop arraylist system.out

我正在尝试修复我的项目以找到并告诉我哪些学生正在尝试使用其他名称进行注册,因此我编写了我的代码来搜索我的arraylist并找到具有相同ID号的那些,但是是否可以更改或添加一些东西,使其不会两次打印相同的信息
示例测试用例

Student ID 103 is repeating the class as names Mark Wall and Stacy Gwee
Student ID 103 is repeating the class as names Stacy Gwee and Mark Wall



for(int n = 0; n<studentList.size(); n++)
         {
         for(int m = 0; m<studentList.size(); m++)
            {
            if(studentList.get(n).getId().equals(studentList.get(m).getId()) && !studentList.get(n).getName().equals(studentList.get(m).getName()))
               {
               System.out.println("Student ID " + studentList.get(n).getId() + " is repeating the class as names " + studentList.get(n).getName() + " and " + studentList.get(m).getName());
               }
            }
          }

4 个答案:

答案 0 :(得分:4)

简单方法:

for(int m = 0 ; m < n ; m++)

或者

for(int m = n + 1 ; m < studentList.size() ; m++)

答案 1 :(得分:2)

要做到这一点,只需更改第二个for循环:

for(int m = 0; m < n; m++)

答案 2 :(得分:1)

这是正确的方法:

  1. 创建地图
  2. 将您的匹配项添加到地图
  3. 在检查列表
  4. 之前,检查地图是否已使用该ID

    您需要一些方法来标记重复项。您可以创建列表或数组来标记这些重复项。然后,您将检查ID以确保之前未调用过。

答案 3 :(得分:0)

如果您将数组想象为网格n空格宽且m空格高,则表示您正在查看每个网格方块。

如果在网格上绘制对角线,实际上只需要查看线上方(或下方)的对角线。

因此,你的内循环可以开始,而不是零,但是值为n。