首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中进行类型转换时出错

在java中进行类型转换时出错
EN

Stack Overflow用户
提问于 2011-02-27 22:01:11
回答 1查看 351关注 0票数 0

嘿,伙计们,我正试着用java写类型转换,但是我一直收到

代码语言:javascript
复制
run: 
[(E,1), (H,1), (F,2), (G,2), (I,5), ( ,7)]
(H,1)
class datacompression.tuple
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to datacompression.tuple
    at datacompression.Chap3.huffman(Chap3.java:79)
    at datacompression.Chap3.histogram(Chap3.java:37)
    at datacompression.Main.main(Main.java:18)
Java Result: 1

以下是源代码:

代码语言:javascript
复制
import java.util.ArrayList;

/**
 *
 * @author Cubearth
 */
public class Chap3 {

    public static void huffman(ArrayList<tuple> list){
        //creates an huffman tree
        ArrayList<Node> huff = new ArrayList<Node>();
        for(int i = 0; i<list.size(); i++){
            huff.add(i, new Node(list.get(i), 2));
            huff.get(i).setScore(list.get(i).getB());
        }

        System.out.println(huff.get(1).getData().toString());
        System.out.println(huff.get(1).getData().getClass());
        while(huff.size()>1){
            String msg = ((tuple)(huff.get(0).getData())).getA()+ ((tuple)(huff.get(1).getData())).getA();
            Node tmp = new Node(msg, 2);
            tmp.setChild(huff.get(0), 1);
            tmp.setChild(huff.get(1), 1);
            tmp.setScore((huff.get(0).getScore()+huff.get(1).getScore()));
            huff.set(0, tmp);
            huff.remove(1);
            sort2(huff);
        }
        System.out.println(huff);
        Tree tmp = new Tree(huff.get(0));
        tmp.print(2);
    }

    public static void sort2(ArrayList<Node> list){
            //sort an arrayList of node, uesing insertion sort
        int pos, min;
        for(pos = 0; pos<list.size()-1; pos++){
            min = pos;
            for(int i = pos+1; i<list.size(); i++){
                if(list.get(i).getScore()< list.get(pos).getScore())
                    min = i;
            }
            if(min!=pos){
                swap2(list, pos, min);
            }
        }
    }

    public static void swap2(ArrayList<Node> list, int a, int b){
            //swap two indexes of list
        Node bucket = new Node(list.get(a).getData(), list.get(a).getNoc());
        list.set(a, list.get(b));
        list.set(b, bucket);
    }
}

为什么我在huffman方法中对类的检查是作为tuple()出现的,但是我不能将它转换为一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-27 22:14:48

一开始,huff.get(0).getData()可能是一个“元组”,但在下面这行代码中:

huff.set(0,tmp);

您将其设置为一个字符串(因为tmp是一个字符串),因此在下一次迭代中它会报错

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

https://stackoverflow.com/questions/5133613

复制
相关文章

相似问题

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