第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么我寫(xiě)了hashcode方法后還是返回false?


代碼

public class Class {

String id;//課程

String name;

public String getId() {

return id;

}

public String getName() {

return name;

}

public void set(String name,String id){

this.id=id;

this.name =name;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((id == null) ? 0 : id.hashCode());

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (!(obj instanceof Class))

return false;

Class other = (Class) obj;

if (id == null) {

if (other.id != null)

return false;

} else if (!id.equals(other.id))

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}


}

/////////////////

public void stuCourse(){//測(cè)試學(xué)生選擇課程

System.out.println("測(cè)試學(xué)生選擇課程2");

Student stu=new Student(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

stu.set("小明","1"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

System.out.println("***歡迎學(xué)生"+stu.name+"選課***"); ? ? ? ? ?

? ? Scanner input=new Scanner(System.in); ? ? ? ? ? ? ? ??

? ? while(true){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? System.out.println("請(qǐng)問(wèn)您要選擇多少門(mén)課程?"); ? ? ? ? ? ? ??

? ? int a=input.nextInt(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? if(a!=0){

? ? if(a<=courseClass.size()){ ? ? ? ? ? ? ? ? ? ?

? ? ? ? ?for(int i=0;i<a;i++){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? System.out.println("請(qǐng)輸入課程id:"); ? ? ? ? ? ? ?

? ? String kcid=input.next(); ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? for(Class cl:courseClass){ ? ? ? ? ? ? ? ? ? ? ??

? ? if(cl.id.equals(kcid)){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ?stu.cla.add(cl);//保存選擇的課程 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? }else{

? ? ?System.out.println("課程大于課程總量!"); ? ? ? ? ? ? ? ? ?

? ? ? ? ?continue;

? ? ? }

? ? }else{

? ? System.out.println("至少選1門(mén)課程??!");

? ? continue;

? ? }

? ? xuanze();

break;

? ? }

}

public void xuanze(){//輸出總共選擇的課程

? ? for(Class c:Student.cla){

? ? System.out.println("選擇了 課程"+c.id+":"+c.name);

? ? }

? ? }

//set的contains 方法

public void testSetContains(){

System.out.println("測(cè)試學(xué)生已選擇的課程名稱:");

String names=input.next();

Class cla3 = new Class();

cla3.name=names;

System.out.println("取得課程:"+names);

System.out.println("是否包含課程:"+cla3.name+":"+student.cla.contains(cla3));

}


正在回答

5 回答

你重寫(xiě)的hashCode()方法中把id也計(jì)算進(jìn)去了,然而你后面給Class對(duì)象添加屬性的時(shí)候只添加了name屬性的值,id值相當(dāng)于為null,所以肯定和Set集合中有id值的元素的哈希碼是不相等的。

0 回復(fù) 有任何疑惑可以回復(fù)我~

只要變量名name就好 ,id不用,試試

0 回復(fù) 有任何疑惑可以回復(fù)我~

你的hashcode()方法有問(wèn)題,你的result結(jié)果有兩個(gè)值(實(shí)際上你只用到的name的):

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((id == null) ? 0 : id.hashCode());

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

0110號(hào)建筑師

看錯(cuò)了,好像沒(méi)錯(cuò)。。。
2017-05-30 回復(fù) 有任何疑惑可以回復(fù)我~

} else if (!name.equals(other.name))

return false;

return true;

}

這個(gè)地方,直接第一個(gè)false就結(jié)束方法了,第二個(gè)true沒(méi)有執(zhí)行

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么我寫(xiě)了hashcode方法后還是返回false?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)