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("您输入的图书名称不存在!!!!");
}
}
}
}
}
}
}
第一: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天,多想,多练。