? ? ? ? 今天我們來說說另外一個關于set集合的練習隆判,上需求:鍵盤錄入學生信息(姓名犬庇、語文成績、數(shù)學成績侨嘀、外語成績)臭挽,輸入“exit”結束輸入,然后按照總分進行排序咬腕,輸出到控制臺欢峰。(錄入學生信息格式【張三 92 88 99】)
? ? ? ? 告訴你需求了,那我們來分析一下吧郎汪,我們要做哪些事:
? ? ? ? 1.首先我們創(chuàng)建一個Student類,添加姓名闯狱、語文成績煞赢、數(shù)學成績、英語成績以及總分屬性哄孤;
? ? ? ? 上代碼:
? ? ? ? 然后Alt+Shift+S選擇生成構造方法和ToString()方法:
? ? ? ? ? ? ? ?注意:生成構造方法的時候不要選擇sum照筑,生成toString()方法時只選擇name和sum就行了, 然后就出現(xiàn)了這些代碼:
? ? ? ? 2.創(chuàng)建一個Set集合來存儲學生信息瘦陈,隨后監(jiān)聽用戶輸入內容凝危,然后判斷用戶是否輸入為“exit”,是則退出循環(huán)晨逝,否則拆分該字符串蛾默,拆分后存到Set集合,最后遍歷學生信息捉貌;
? ? ? ? 代碼:
? ? ? ? 哈哈哈哈支鸡!寫完一大半了,就差排序了哦趁窃!讓我們先測試一下牧挣,嘿嘿嘿嘿:
? ? ? ? 輸入【張三 92 88 99】試一下:
? ? ? ? Oh,No醒陆!見紅了瀑构!“java.lang.ClassCastException”類型轉換異常?Excuse me???
? ? ? ? 我們再往后看看刨摩,它說:“setDemo.Student cannot be cast to java.lang.Comparable”寺晌,就是說Student類不能被投射到比較器,不能投射澡刹?那我就給你加一個比較器折剃!
? ? ? ? 可是...可是,添加了還是不行啊像屋,我們把鼠標移動到Student上看看怕犁,出現(xiàn)“Add unimplemented methods”,意思是添加未實現(xiàn)的方法,好奏甫,那就再給你加一個戈轿!點擊之后出現(xiàn)了這段代碼:
? ? ? ? 上文說過,這個比較器默認“return 0;”阵子,“return 0;”則代表只返回一個數(shù)思杯;而“return 正數(shù);”則代表正序輸出;“return 負數(shù);”則代表倒序輸出挠进。那么這里呢色乾,我們就“return o.sum - this.sum;”,這樣领突,解決剛才異常的同時暖璧,我們還完成了排序,真是棒棒噠君旦!
? ? ? ? 這回我們再來測試一下澎办,輸出結果如下:
? ? ? ? 細心的朋友問了,要是我不小心把數(shù)據(jù)格式輸錯咋辦金砍?好局蚀,那我們就來試試輸入格式錯誤的情況:
? ? ? ? 又見紅了!K〕怼琅绅!好氣哦!6煳 奉件!
? ? ? ? 怎么辦?這里我們用一個try...catch就好啦昆著,代碼:
? ? ? ? 這下應該沒問題了县貌,我們再來測試一下:
? ? ? ? OK!大功告成凑懂!上完整代碼:
? ? ? ? Demo類:
? ? ? ? Student類:
? ? ? ? 結語:以上就是Set集合練習(2)的全部內容煤痕,有說的不對的、不專業(yè)的地方還請大佬們多多為小弟指點接谨,下次更新不見不散摆碉!