好的,该类的目标是重写Enumeration对象类内部的两个方法。我相信我的hasNextElement()
方法应该可以工作,对此的任何指针将不胜感激。但是,我在nextElement()
方法上遇到麻烦。请原谅该类中的注释不当,但nextElement()
的目标是一次返回一个字符。我发现它只是一个简单的循环,但是netBeans一直给我不兼容的dataTypes,这是有道理的,因为它是String方法而不是Char方法。所以我将其更改为char并且得到
nextElement() in StringEnumeration cannot implement nextElement() in Enumeration return type char is not compatible with String where E is a type-variable:
任何帮助将不胜感激。记得我是一名初学者程序员,所以我做错了一些容易修复的错误。
public class StringEnumeration implements Enumeration<String> {
public String value;
public StringEnumeration(String initialValue) throws InvalidStringException {
if (initialValue == null || initialValue.length() == 0) {
throw new InvalidStringException("initialValue is either null or 0");
}
this.value = initialValue;
}
@Override
public boolean hasMoreElements() {
return value.length() != 0 || value != null;
}
@Override
public String nextElement() {
StringBuffer test = new StringBuffer(value);
for (int i = 0; i < value.length(); i++) {
return test.charAt(i);
}
}
}
最佳答案
最简单的方法是将您所在的索引作为枚举变量保留:
// we return characters
public class StringEnumeration implements Enumeration<Character> {
// the value
private String value;
// current index
private int idx=0;
public StringEnumeration(String initialValue) throws IllegalArgumentException {
if (initialValue == null || initialValue.length() == 0) {
throw new IllegalArgumentException("initialValue is either null or 0");
}
this.value = initialValue;
}
@Override
public boolean hasMoreElements() {
// can we still read
return idx<value.length();
}
@Override
public Character nextElement() {
// get current char and increment index
return value.charAt(idx++);
}
}