亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

編譯不通過????

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("您輸入的圖書名稱不存在!!!!");

? ? ? }

? ? }

? ? ?

? ? }

? ?}

? }

}

}


正在回答

1 回答

第一: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天,多想,多練。


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

qq_忘我O_03586139 提問者

非常感謝!
2016-08-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

編譯不通過????

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號