【问题标题】:How do i convert this for each into a for loop?我如何将这个 for each 转换为 for 循环?
【发布时间】:2019-12-09 20:06:12
【问题描述】:

我无法将此 foreach 更改为 for 循环。我在使用链表时不能使用 foreach,所以我需要将其更改为 for 循环

 private boolean login(String username, String password) {
    MyList<Admin> admins = null;
    XStream xstream = new XStream(new DomDriver());
    try {
        ObjectInputStream is = xstream.createObjectInputStream(new FileReader("Admins.xml"));
        admins = (MyList<Admin>) is.readObject();
        is.close();
    }
    catch(FileNotFoundException e) {
        admins =  new MyList<Admin>();
        txtFeedBackArea.setText("Password File not located");
        return false;

    }
    catch (Exception e) {
        txtFeedBackArea.setText("Error accessing Password File");
        return false;
    }

    for (Admin admin: admins) {
        if(admin.getUsername().equals(username) && 
admin.getPassword().equals(password))
            return true;
    }
    return false;
}*/

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow!到目前为止,您尝试过什么?
  • 当你说“我不能使用 foreach”时,你的意思是说你不允许使用enhanced for loop(因为这是作业)?

标签: java loops for-loop foreach


【解决方案1】:

这个怎么样?

for (int i = 0; i < admins.size(); i++) {
    final Admin a = admins.get(i);
    if(a.getUsername().equals(username) && a.getPassword().equals(password))
        return true;
}

顺便说一句,使用 for-each 样式循环总是更好,因为它提供了更多的可读性和便利性

编辑:既然你提到了链表,最好使用链表迭代器来迭代你的集合。

for (ListIterator<Admin> iter = admins.listIterator(0); iter.hasNext()) {
    final Admin a = iter.next();
    if(a.getUsername().equals(username) && a.getPassword().equals(password))
        return true;
}

你也可以使用while循环

while (iter.hasNext()) {
// do the work
}

【讨论】:

  • 伙伴这个成功了,非常感谢,最后是做什么的?
  • @Jhogan 很高兴它对您有所帮助。 final 关键字将变量标记为常量,在这种情况下,这意味着您无法使用 Admin 类的另一个实例重新初始化 a(换句话说,更改它引用的对象)。但是,您仍然可以编辑其成员。对于原始类型(int,float,char 等)final 只是表示变量的值不能修改
  • 由于问题提到了“链表”,因此最好使用基于Iterator 的循环而不是基于索引...
  • @Holger 谢谢你,你是对的。我编辑了我的答案以获得许可
猜你喜欢
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多