因为篇幅问题我就只把执行相关的部分贴出来:
static String tushu[]={"论语","高数","数据结构","单片机应用","JAVA入门"}; //这部分是数组的代码
case "1":
System.out.println("输入图书名称:");
String name=s.nextLine();
name=name.trim();
System.out.println(tushu[0]);
for(int i=0;i<tushu.length;i++){
if(tushu[i]==name){
System.out.println("book:"+name);
break;
}//这不部分是选择图书名称匹配的代码 就是这里判断不出来。输出什么都试过了,就是进不了这个循环
if(i==(tushu.length-1)){
throw new NullPointerException("图书不存在");
}
}
break;
字符串对比 需要用到equals if(tushu[i]==name)你这句改成 if(tushu[i].equals(name))
说错了,是那个if判断进不去
package 模拟借书系统; import java.util.Scanner; public class BorrowBooks { static String tushu[]={"论语","高数","数据结构","单片机应用","JAVA入门"}; public static void main(String[] age){ boolean cc=true; while(cc){ try { System.out.println("输入命令:1-按照名称查找图书:2-按照标号查找图书"); Scanner s= new Scanner(System.in); String a=s.nextLine(); switch (a) { case "1": System.out.println("输入图书名称:"); String name=s.nextLine(); name=name.trim(); System.out.println(tushu[0]); for(int i=0;i<tushu.length;i++){ if(tushu[i]==name){//这个循环进不去 System.out.println("book:"+name); break; } if(i==(tushu.length-1)){ throw new NullPointerException("图书不存在"); } } break; case "2": System.out.println("请输入图书编号:"); String text=s.nextLine(); int n=Integer.parseInt(text); System.out.println("book:"+tushu[n-1]); break; default: throw new typeException("输入命令错误,请按要求输入命令"); } cc=false; } catch (typeException e) { // TODO 自动生成的 catch 块 System.out.println("输入命令错误,请按要求输入命令!"); }catch(NullPointerException e){ System.out.println("图书不存在!"); }catch(NumberFormatException e){ System.out.println("请按要求输入数字!"); } } } } class typeException extends Exception { /** * */ private static final long serialVersionUID = 1L; public typeException(){}; public typeException(String a){ super(a); } }
全部贴出来 大家看看哪里有问题啊