问题描述
- 有关迭代器iterator的java实现的问题
-
public Iterator<Item> iterator(){ return new ArrayIterator(); } private class ArrayIterator implements Iterator<Item>{ private int[] random; private int current = 0; //line: 47 random = new int[N]; for(int i = 0; i < N; i++) random[i] = head + i; StdRandom.shuffle(random); public boolean hasNext(){ //line:52 return current != (N - 1); } public void remove(){ } public Item next(){ return RQ[random[current++]]; } }
错误报告
File: C:UsersCHNalgs4RandomizedQueue.java [line: 47]
Error: Syntax error on token ";", { expected after this token
File: C:UsersCHNalgs4RandomizedQueue.java [line: 52]
Error: Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration
File: C:UsersCHNalgs4RandomizedQueue.java [line: 52]
Error: Syntax error, insert ";" to complete LocalVariableDeclarationStatement
File: C:UsersCHNalgs4RandomizedQueue.java [line: 52]
Error: Syntax error on token "{", ; expected总报告缺分号、花括号之类的
但像这样的又可以( 不是同一个类里的):
public Iterator iterator(){
return new ListIterator();
}
private class ListIterator implements Iterator{
private Node current = first;
public boolean hasNext(){
return current != null;
}
public void remove(){ }
public Item next(){
Item item = current.item;
current = current.next;
return item;
}
}对java一知半解,求解答,谢谢。
解决方案
你这个连括号分号都没有配对,估计是粘贴代码都没有粘贴全,属于很低级的一类错误,先排除了这样的错误再说。
解决方案五:
另外该有分号都有了吧
复制什么啊 大神也不能这样侮辱人啊
我承认我小白,但都自己构思自己写的
那个链表迭代器书里的,我做练习时看一下都不行啊,一个随机删取数的队列
解决方案六:
用工具栏上的代码按钮,将你完整的代码包裹在里面,贴在这里。
解决方案七:
/**
- Auto Generated Java Class.
- 2015.3.7
*/
import java.util.Iterator;
public class RandomizedQueue implements Iterable{
private Item[] RQ;
private int N;
private int head;
private int tail;
public RandomizedQueue (){
RQ = (Item[]) new Object[1];
N = 0;
head = 0;
tail = 0;
}
public boolean isEmpty(){
return N == 0;
}
public int size(){
return N;
}
public void enqueue(Item item){
if(N == RQ.length)
resize(2*RQ.length);
RQ[++tail] = item;
N++;
}
public Item dequeue(){
int RN;
RN = StdRandom.uniform(head, tail);
RQ[RN] = null;
move(RN);
if(N > 0 && N == RQ.length/4)
resize(RQ.length);
return RQ[RN];
}
public Item sample(){
return RQ[StdRandom.uniform(head, tail)];
}
public Iterator iterator(){
return new ArrayIterator();
}
private class ArrayIterator implements Iterator{
private int[] random;
private int current = 0;
random = new int[N];
for(int i = 0; i < N; i++)
random[i] = head + i;
StdRandom.shuffle(random);
public boolean hasNext(){
return current != (N - 1);
}
public void remove(){ }
public Item next(){
return RQ[random[current++]];
}
}
private void move(int x){
}
private void resize(int max){
}
}
//这两个函数还没写,另外使用了普林斯顿的库 stdlib.jar
解决方案八:
有一些显示不了 怎么弄啊 谢谢你