編譯不通過????
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高數-1002大學英語-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("請按下面要求輸入:1.按圖書編號查詢\2.按圖書的名字查詢");
? ?Scanner sc=new Scanner(System.in);
? ? int k=sc.nextInt();
? ? if(k==1){
? ? System.out.println("請您輸入圖書編號:");
? ? 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("您輸入的編號不對,請重新輸入!!!!");
? ? ? }
? ? }
? ? if(k==2){
? ? ?System.out.println("請輸入所需圖書名稱:");
? ? ?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高數,1002大學英語,1003電路分析,1004java}????? 那么例如第一次循環String[] arr1=arr[0].split(" ");其中arr[0]是1001高數,拆分后還是1001高數,arr1的長度是1,你去arr1[1]肯定越界??!??
你的這句代碼 String s="1001高數-1002大學英語-1003電路分析-1004java";??
1001高數(1001 高數),這之間有空格?。?!,才能被arr[i].split(" ");拆分成?? 1001? 和 高數。并且后面的也有空格;
第二:?System.out.println("請按下面要求輸入:1.按圖書編號查詢\2.按圖書的名字查詢");?
“?? \“這個是特殊字符,換成空格吧,(\ 能打需轉譯)
第三:? ? if(k==2)和if(k==1)是平級的,你把if(k==2)寫在if(k==1)里面是啥意思?。?!提出來和if(k==1)平級
第四:if(k==2)和if(k==1)里面catch(Exception e){System.out.println("您輸入的編號不對,請重新輸入!!!!");這個出了異常才會執行,你輸入不正確怎么能算異常呢?在? ? if(key.equals(str1)){
? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? }后面加else里面輸入,沒有此編號的書
第五:if(k==2)里面你按得的是名字找,代碼怎么能是? ? if(key.equals(str2)){
? ? ? ? System.out.println("所查的圖書為:"+key+":"+value);
? ? ? ? }其中key.equals(str2)錯誤,改成value.equals(str2)。
錯誤真的多,這只是初學,基礎必須打結實,寫代碼的時候要思路清晰,一行寫完就知道電腦執行后的結果是啥。這樣做才能不糊涂。我也是初學5天,多想,多練。