为了账号安全,请及时绑定邮箱和手机立即绑定

看他们写的compareTO方法中

public int compareTo(Card o) {

        if (Values.indexOf(this.value) == Values.indexOf(o.value)) {

            return Integer.valueOf(Colors.indexOf(this.color)).compareTo(Integer.valueOf(Colors.indexOf(o.color)));

        } else {

            return Integer.valueOf(Values.indexOf(this.value)).compareTo(Integer.valueOf(Values.indexOf(o.value)));

        }

    }

}



为什么必须用integer.valueOf????????

正在回答

4 回答

compareTo方法是Comparable接口的抽象方法,Integer类已经实现了,所以直接使用,
而他自定义的Card类要自己实现Comparable接口,所以才有这个CompareTo方法。

int是基本数据类型,并不是对象,你应该考虑的是这里填入int会不会自动装箱成Integer,
不能的话肯定要用Integer.valueOf转成Integer对象。


0 回复 有任何疑惑可以回复我~

Values.indexOf(this.value)

这句话是错的,运行不了     values.indexOf() 能用于字符串中,但不可以是字符串数组,如果想用

改成这样

    public final String[] colors = { "红桃", "黑桃", "方块", "梅花", "大" };
    public final String[] values = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "王" };
    
    public String VVV = "2345678910JQKA王 ";
    public String CCC = "梅花方块黑桃红桃小大 ";
    @Override
    public int compareTo(Card o) {
        // TODO Auto-generated method stub
         if (VVV.indexOf(this.value) != VVV.indexOf(o.value)) {
                return Integer.valueOf(VVV.indexOf(this.value)).compareTo(Integer.valueOf(VVV.indexOf(o.value)));
            } else {
                return Integer.valueOf(CCC.indexOf(this.color)).compareTo(Integer.valueOf(CCC.indexOf(o.color)));
            }
    }
    
    values 和 colors 是数组  而CCC和VVV才是字符串
    或者把字符串数组强转为字符串也可以
    StringBuilder str1 = new StringBuilder("");
   for (int i=0; i<values.length; ++i) {
       str1 += values[i];
   }
   stri.toString();


0 回复 有任何疑惑可以回复我~

是不是compareTo比较的是integer而不能是int,而integer.valueOf等于是强转?是吗?

0 回复 有任何疑惑可以回复我~

5742b9a30001ce7905000152.jpg

5742b9a4000129ab05000296.jpg

首先你看看API文档,这个

public int compareTo(Integer anotherInteger)
方法是int的包装类Integer的方法,参数也是一个Integer的实例对象;

其次,public static Integer valueOf()返回的真好是一个Integer的实例对象;

最后,你重写的public int compareTo(Card o)返回的是一个整数类型的值,而我上述中提到的方法compareTo()返回的也是个整数;

懂了没?

0 回复 有任何疑惑可以回复我~
#1

qq_之恩赫奥丶_0 提问者

是不是compareTo比较的是integer而不能是int,而integer.valueOf等于是强转?是吗?
2016-05-24 回复 有任何疑惑可以回复我~
#2

ixenos 回复 qq_之恩赫奥丶_0 提问者

形参是Card类对象 public int compareTo(Card o)
2016-06-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

看他们写的compareTO方法中

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信