編譯不通過(guò)????
package order;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class book {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
? String s="1001高數(shù)-1002大學(xué)英語(yǔ)-1003電路分析-1004java";
? TreeMap tp=new TreeMap();
? String[] arr=s.split("-");
? for(int i=0;i<arr.length;i++){
? ?String[] arr1=arr[i].split(" ");
? ?tp.put(arr1[0], arr1[1]);
? }
??
? while(true){
? ?Set keySet=tp.keySet();
? ?Iterator it=keySet.iterator();
? ?System.out.println("請(qǐng)按下面要求輸入:1.按圖書編號(hào)查詢\2.按圖書的名字查詢");
? ?Scanner sc=new Scanner(System.in);
? ? int k=sc.nextInt();
? ? if(k==1){
? ? System.out.println("請(qǐng)您輸入圖書編號(hào):");
? ? String ?str1=sc.next();
? ? while(it.hasNext()){
? ? ? Object key=it.next();
? ? ? Object value=tp.get(key);
? ? ? try{
? ? ? if(key.equals(str1)){
? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? }
? ? ? }catch(Exception e){
? ? ? ?System.out.println("您輸入的編號(hào)不對(duì),請(qǐng)重新輸入!!!!");
? ? ? }
? ? }
? ? if(k==2){
? ? ?System.out.println("請(qǐng)輸入所需圖書名稱:");
? ? ?String str2=sc.next();
? ? ?while(it.hasNext()){
? ? ? Object key=it.next();
? ? ? Object value=tp.get(key);
? ? ? try{
? ? ? if(key.equals(str2)){
? ? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? ? }
? ? ? }catch(Exception e){
? ? ? ?System.out.println("您輸入的圖書名稱不存在!!!!");
? ? ? }
? ? }
? ? ?
? ? }
? ?}
? }
}
}
2016-08-04
第一:main方法下面第六行 ?String[] arr1=arr[i].split(" "); 是按空拆分arr[i],arr里面是{1001高數(shù),1002大學(xué)英語(yǔ),1003電路分析,1004java}????? 那么例如第一次循環(huán)String[] arr1=arr[0].split(" ");其中arr[0]是1001高數(shù),拆分后還是1001高數(shù),arr1的長(zhǎng)度是1,你去arr1[1]肯定越界??!??
你的這句代碼 String s="1001高數(shù)-1002大學(xué)英語(yǔ)-1003電路分析-1004java";??
1001高數(shù)(1001 高數(shù)),這之間有空格?。?!,才能被arr[i].split(" ");拆分成?? 1001? 和 高數(shù)。并且后面的也有空格;
第二:?System.out.println("請(qǐng)按下面要求輸入:1.按圖書編號(hào)查詢\2.按圖書的名字查詢");?
“?? \“這個(gè)是特殊字符,換成空格吧,(\ 能打需轉(zhuǎn)譯)
第三:? ? if(k==2)和if(k==1)是平級(jí)的,你把if(k==2)寫在if(k==1)里面是啥意思!?。√岢鰜?lái)和if(k==1)平級(jí)
第四:if(k==2)和if(k==1)里面catch(Exception e){System.out.println("您輸入的編號(hào)不對(duì),請(qǐng)重新輸入!!!!");這個(gè)出了異常才會(huì)執(zhí)行,你輸入不正確怎么能算異常呢?在? ? if(key.equals(str1)){
? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? }后面加else里面輸入,沒(méi)有此編號(hào)的書
第五:if(k==2)里面你按得的是名字找,代碼怎么能是? ? if(key.equals(str2)){
? ? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? ? }其中key.equals(str2)錯(cuò)誤,改成value.equals(str2)。
錯(cuò)誤真的多,這只是初學(xué),基礎(chǔ)必須打結(jié)實(shí),寫代碼的時(shí)候要思路清晰,一行寫完就知道電腦執(zhí)行后的結(jié)果是啥。這樣做才能不糊涂。我也是初學(xué)5天,多想,多練。