编译不通过????

来源:1-9 经验总结

qq_忘我O_03586139

2016-08-03 17:57

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回答

  • 慕荣求胜
    2016-08-04 00:35:48
    已采纳

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


    qq_忘我O...

    非常感谢!

    2016-08-05 13:37:06

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题