gpt4 book ai didi

java - java中构造函数和方法返回不同的值

转载 作者:行者123 更新时间:2023-12-01 20:52:16 25 4
gpt4 key购买 nike

我想知道为什么在地方(),它返回不同的值。在构造函数中,它返回 3,这是有道理的。然而,在第二个()中,它返回 0。我认为两个地方都应该返回 0。我在这里遗漏了什么吗?

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Vector2D implements Iterator<Integer> {
private List<List<Integer>> vec2d;
private Iterator<Integer> it;
private int counter = 0;
private int size;
public Vector2D(List<List<Integer>> vec2d) {
this.vec2d = new ArrayList<List<Integer>>();
if(vec2d.size() == 0) {
this.it = null;
} else {
this.size = vec2d.size();
System.out.println("this size is " + size); // * returns 3
this.it = vec2d.get(0).iterator();
}
}

@Override
public Integer next() {
System.out.println("what happens here? " + vec2d.size()); **// * why it returns 0?? should it return 3??**
if(hasNext()) {
return it.next();
}
return -1;
}

@Override
public boolean hasNext() {
if(it == null) {
return false;
}
while(counter < size) {
if(it.hasNext()) {
return true;
}
counter++;
if(counter >= size) {
return false;
}
System.out.println("counter is " + counter + " size is " + vec2d.size());
List<Integer> l = vec2d.get(counter);
it = l.iterator();
}
return false;
}

public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
List<Integer> list3 = new ArrayList<Integer>();
list.add(1);
list.add(2);
list2.add(3);
list3.add(4);
list3.add(5);
list3.add(6);
List<List<Integer>> lists = new ArrayList<List<Integer>>();
lists.add(list);
lists.add(list2);
lists.add(list3);

Vector2D vec = new Vector2D(lists);
System.out.println(vec.next());

}
}

最佳答案

您必须将构造函数参数中的值分配给您的属性,否则您将使用参数 vec2d而不是你的属性 vec2d :

public Vector2D(List<List<Integer>> vec2d) {
this.vec2d = vec2d;//assign Parameter to list
if(this.vec2d.size() == 0) {
this.it = null;
} else {
this.size = this.vec2d.size();
System.out.println("this size is " + size); // * returns 3
this.it = this.vec2d.get(0).iterator();
}
}

尝试重命名 List<List<Integer>> vec2d方法参数为其他内容,您会看到。

关于java - java中构造函数和方法返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com