作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定以下代码:
public void insertIntoQueue(float length,int xElement,int yElement,int whichElement)
{
Dot dot = new Dot(xElement,yElement);
GeometricElement element = null;
// some code
int robotX,robotY;
boolean flag = false;
for (Iterator<Robot> i = robotList.iterator(); i.hasNext();)
{
// Robot currentRobot = (Robot) i.next();
robotX = ((Robot)(i)).getXlocation();
robotY = ((Robot)(i)).getYlocation();
// more code , irrelevant
}
我有以下对象:Robot、GeometricElement 和 Dot。
我想迭代一个 Robot 链表,它定义为:
public class Ground {
// more fields
private LinkedList <Robot> robotList; // used for storing the robots
public Ground(int row,int col) // ctor
{
// some code
this.robotList = new LinkedList<Robot>();
}
}
但是行:robotX = ((Robot)(i)).getXlocation();
和 robotY = ((Robot)(i)).getYlocation();
抛出 dispatchUncaughtException
异常。
请注意,我不想从链表中删除元素,我需要的是使用迭代器从当前元素中获取字段。
那怎么了?
问候罗恩
最佳答案
您注释掉的行实际上是正确的行,除了删除强制转换:
Robot currentRobot = i.next();
因为您的迭代器是有类型的,所以您不需要强制转换,编译器会确保您使用的是正确类型的对象。
之后,您可以简单地:
robotX = currentRobot.getXlocation();
robotY = currentRobot.getYlocation();
没有丑陋的造型!
顺便说一句,如果你不需要通过迭代器修改集合,你可以大大改进代码风格,购买使用“foreach”:
for (Robot currentRobot : robotList) {
robotX = currentRobot.getXlocation();
robotY = currentRobot.getYlocation();
// .. more code
}
关于Java烦人的迭代器不会返回链表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8469274/
我正在为本地一家面包店制作一个网站,我想在主页上放置一个类似 facebook 的按钮。我去了 developers.facebook 并复制并粘贴了代码。我认为过去有多种选择(iframe 等),但
我有一个奇怪而烦人的问题。在我的 ASP.NET MVC 5 项目中,我不时看到 _ViewStart 文件和 Shared/_Layout.cshtml 文件是自动创建的,即使我不想要。因此,我删除
我是一名优秀的程序员,十分优秀!