首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassCastException在HashSet上迭代时

ClassCastException在HashSet上迭代时
EN

Stack Overflow用户
提问于 2015-02-16 23:38:20
回答 1查看 376关注 0票数 0

我有一个HashSet<String>,里面充满了名为shingles的字符串(如果将字符串"Fizzbuzz“分解成带状,就会得到"Fi”、"iz“、"zz”、"zb“、"bu”、"uz“、"zz”。)不重要,但这就是板子在这种情况下的含义)。

我试图通过以下方法返回HashSet内容的字符串:

代码语言:javascript
复制
public String getShinglesAsString() {
    String shingles = "";
    for (String shingle : this.shingles) {
        shingles += shingle + " ";
    }

    return shingles;
}

for (String shingle : this.shingles)正在抛出一个ClassCastException。具体的消息是Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.CharSequence

我也尝试过使用Iterator对象,我也遇到了同样的问题。这是我的代码,用于从输入给构造函数的字符串中生成带状代码:

代码语言:javascript
复制
// Will generate a new set of shingles based on sentence
public void generateShingles() {
    shingles = new HashSet<>();

    for (int i=0; i<getSentence().length()-1; i++) {
        getShingles().add(getSentence().charAt(i) + getSentence().charAt(i+1));
    }
}

编辑:这是minmal, complete, verifiable example:

代码语言:javascript
复制
public class SentenceWithShingles {
private String sentence;
private Set<String> shingles;

// Constructor
public SentenceWithShingles(String sentence) {
    this.sentence = sentence;
    generateShingles();
}

// Will generate a new set of shingles based on sentence
public void generateShingles() {
    shingles = new HashSet<>();

    for (int i=0; i<getSentence().length()-1; i++) {
        getShingles().add(getSentence().charAt(i) + getSentence().charAt(i+1));
    }
}

public void setSentence(String sentence) {
    this.sentence = sentence;
}

public Set getShingles() {
    return shingles;
}

public String getShinglesAsString() {
    String shingles = "";
    for (String shingle : this.shingles) {
        shingles += shingle + " ";
    }

    return shingles;
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-17 00:32:18

错误在这里:

代码语言:javascript
复制
getShingles().add(getSentence().charAt(i) + getSentence().charAt(i+1));

这一行将这两个字符相加在一起。而不是连接他们。

代码语言:javascript
复制
getShingles().add(getSentence().charAt(i) + "" + getSentence().charAt(i+1));

将强制正确的语义学。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28552265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档