为了账号安全,请及时绑定邮箱和手机立即绑定

编译不通过????

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下载
官方微信