【问题标题】:How can I make a good Iterator我怎样才能做一个好的迭代器
【发布时间】:2021-08-17 07:38:09
【问题描述】:

有人知道这段代码,问题出在哪里

import java.util.Iterator;
import java.util.NoSuchElementException;

public class AlbumIterator implements Iterator<Fotoablum>{
    Fotoalbum album;
    Foto aktuell;
    
    public AlbumIterator(Fotoalbum album){
        this.album=album;
        this.aktuell=aktuell;
    }
    public boolean hasNext(){
        if(this.aktuell == null){
            return true;
        }else{
            return this.aktuell.getNächstes() != null;
        }
    }
    public Foto next(){
        if(this.aktuell == null){
            this.aktuell = this.ablum.erstesFoto;
            return this.aktuell;
        }
        if(this.aktuell.getNächstes() == null){
            throw new NoSuchElementException("Keine weiteren Elemente vorhanden");
        }else{
            this.aktuell = this.aktuell.getNächstes();
            return this.aktuell;
        }
    }
    public void remove() {
        throw new UnsupportedOperationException("Diese Aktion wird nicht unterstützt.");
    }
    public static void main(String[] args){
        return;
    }
}

错误信息

AlbumIterator.java:5: error: cannot find symbol
public class AlbumIterator implements Iterator<Fotoablum>{
                                               ^
  symbol: class Fotoablum
AlbumIterator.java:22: error: cannot find symbol
            this.aktuell = this.ablum.erstesFoto;
                               ^
  symbol: variable ablum

这是一个关于java迭代器的作业。试了很多次,还是错了,怎么弄,需要main函数吗?

【问题讨论】:

  • 大多数现代 Java IDE 可以自动修复您收到的错误消息。
  • 好像有错别字。 Fotoablum 应该是 Fotoalbum
  • this.ablum 应该是this.album。确保您确实阅读了错误消息并进行了研究,这比在这里询问要快得多。
  • 没有@LukasEder,但错误中的第一个result 提到检查错字是第一步,因此阅读和研究可能会找到解决方案。
  • 看第三行和第四行,单词替换错误的地方更多,你可以通过使用像IntelliJ IDEA这样的IDE来避免这种类型的错误。

标签: java iterator


【解决方案1】:

使用流的更简单的解决方案

您可以省去麻烦,从Stream 创建一个:

Iterator<Foto> it =
Stream.iterate(
         album.erstesFoto, 
         f -> f.getNächstes() != null, 
         f -> f.getNächstes())
      .iterator();

你的具体编译问题

AlbumIterator.java:5: error: cannot find symbol
public class AlbumIterator implements Iterator<Fotoablum>{
                                               ^
  symbol: class Fotoablum

我的 German-fu 说你的类名中有错字,不过,你的意思是遍历 Foto,而不是 Fotoalbum

AlbumIterator.java:22: error: cannot find symbol
            this.aktuell = this.ablum.erstesFoto;
                               ^
  symbol: variable ablum

同样的错字,这次是局部变量。

【讨论】:

  • 当您的回答仅包含流建议时,我实际上投了反对票。我想你已经在宽限期内对其进行了编辑,所以很遗憾,我无法撤回我的投票,因为从技术上讲,答案还没有被编辑过。如果可以的话,我很乐意撤回。
  • 我们不允许使用 Stream 来解决这个问题,但是谢谢
猜你喜欢
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2023-03-22
  • 2021-04-13
  • 1970-01-01
相关资源
最近更新 更多