//BufferedReader br=new BufferedReader(new InputStreamReader(System.in));可以用这种方法
      byte []b=new byte[1024];
      
      try {
       System.in.read(b);
System.out.println("书为-->"+ bk.findByname(b.toString()));
} catch (IOException e) {
e.printStackTrace();
}
      
      
   }上面是模拟书店的一段程序代码,
 bk.findByname(String str)方法是一个接受String 参数,这个方法的作用是通过输入的字符串找出这本书的信息,如果直接输入字符串是没有问题的,主要是我想用键盘输入书名,然后找到这本书的信息,现在我的问题是怎用上面的方法不能传入string 参数,想知道原因,以及改正下错误,谢谢~

解决方案 »

  1.   

    b.toString() 出现的比较诡异,应该是new String(b)吧
      

  2.   

    也不是啊 !给个结果你看下。。输出为空。。结果:如下
    请输入你要找的书。
    Java
    书为-->null
      

  3.   


    int count = System.in.read(b);
    System.out.println("书为-->"+ bk.findByname(new String(b, 0 ,count - 2)));byte[]转换成String时,后面的空白字节也转换了,用上面的试一下。
    count - 2 是为了将\r\n去掉
      

  4.   

    //索引图书--通过书名查询
    public Books findByname(String str){
    Books book=null;
    Iterator l=allBook.iterator();
    while(l.hasNext()){
    Books temp=(Books)l.next();
    if(str==temp.getname()){
    book=temp;
    break;
    }
    }
    return book;
    }
    方法是这样的,试过你说的,还是不行哦!
      

  5.   

    if(str==temp.getname())
    str相等比较用equal呀