我又卡住了。
我有 List<Node> node
一些值 (6, 14) (6, 13) (6, 12)
显示为
for (Node n : node)
System.out.print(n);
我不想更改列表类型,但想使用数字,例如 (6,14) 并将它们分别保存到 int 中。
int x = 6;
int y = 14;
我尝试了几件事,但似乎没有任何工作可以工作node.get(0)
,只是将整个节点显示为 0。
有任何想法吗?
您的问题不清楚,但我将尝试通过以下假设来回答:
1)通过节点,你的意思是接口 org.w3c.dom.Node
2)节点中的每个元素(您的 List 变量)也是一个节点。
3)节点元素包含两个子节点。每个子节点由一个整数值组成。
如果上述假设是正确的,这里有一些代码可以从第一个列表元素中检索整数值。
Node element0 = node.get(0);
NodeList children = element0.getChildNodes();
Node intNode0 = children.item(0);
Node intNode1 = children.item(1);
int x;
int y;
try {
x = Integer.parseInt(intNode0.getTextContent());
y = Integer.parseInt(intNode1.getTextContent());
} catch (Exception e) {
System.out.println("Child node is not integer value");
}
`
如果你使用 c++,我会告诉你,你可以使用运算符重载。在 System.out.print(n);
c++ 中,看起来std::cout<<n;
你可以打印任何你想要的东西,比如 6 或 14,甚至 6+14。但是在Java中,node.get(0)
也许是唯一的方法,因为Java没有运算符重载,任何基于函数的运算符。您可以通过运算符重载使用函数做同样的事情。您可以通过 6 得到 6 n.get(0)
,也可以创建一个函数做 6+14。
看下面的代码
import java.util.ArrayList;
import java.util.List;
class Node {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Node(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
public class stackov1 {
/**
* @param args
*/
public static void main(String[] args) {
List<Node> node= new ArrayList();
node.add(new Node(10,12));
node.add(new Node(11,14));
for (Node n : node){
System.out.println(n.getX());
System.out.println(n.getY());
// System.out.print(n);
}
}
}