查书系统
这个比较简单,但是有些内容是前面两季没讲过的
其中比较难的一点我提一下:
用Scanner时,用户输入数据后按下了回车键
数据会被Scanner获取,但回车键会变成"\n"字符溢出
下一次用Scanner时,Scanner就会出错
详情见代码中choose方法里的最后一行
一共两个class,包名叫lib
第一个class文件,取名text.class
package lib;
import java.util.InputMismatchException; //该类为<输入的数据不是整型>的异常类
import java.util.Scanner;
public class text {
static Scanner sc = new Scanner(System.in);//为Scanner类创建实例一个对象sc
static text text = new text();//为text类创建实例一个对象text
public static void main(String[] args) { //程序入口函数
System.out.print("欢迎使用图书馆的寻书系统!\n1.按照名称查找图书 2.按照序号查找图书\n请输入数字选择找书方式:");
text.choose();//选择查询方式的方法
}
public void choose () {
int a=0;
while (a!=1&&a!=2){ //while循环,直到输入1或2 跳出循环
try {
a = sc.nextInt();
if(a==1) {text.num1();}
else if(a==2){text.num2();}
else {System.out.print("输入错误,请输入1或者2:");}
}catch(InputMismatchException e) {//检测<输入的数据不是整数>异常
System.out.print("输入错误,请输入1或者2:");
sc.nextLine(); //如果去掉这一行就会程序会陷入无限错误循环
}
}
}
public void num1(){ //按名称方式查书的方法
boolean a=true;
System.out.print("请输入图书的名称:");
while(a) {
String bookName = sc.next(); //接收String数据
for(int i=0;i<book.bookTotal;i++) { //在book类里面有定义每本书的名字,这里用for循环一一对应查找
if(bookName.equals(book.bookk[i].geta())) {//两个Stirng变量指向的地址不同,所以这里不能用String1==String2,要用equals方法,第三季有讲
System.out.println("该书名称为:"+book.bookk[i].geta()+"\n该书序号为:"+book.bookk[i].getb());
i=book.bookTotal;//跳出for循环
a=false;//跳出while循环
}
}
if(a) {System.out.print("该书的名称不存在,请重新输入:");}
else {System.out.println("感谢您的使用,程序结束!");}
}
}
public void num2(){ //按序号方式查书的方法
int bookNum = 0;
System.out.print("请输入图书的序号:");
while(!(bookNum>=1&&bookNum<=book.bookTotal)){//如果bookNum不在这个范围内就循环
try {
bookNum = sc.nextInt();
if(bookNum>=1&&bookNum<=book.bookTotal){System.out.println("该书名称为:"+book.bookk[bookNum-1].geta()+"\n该书序号为:"+book.bookk[bookNum-1].getb());}
else {System.out.print("输入错误,请输入1到"+book.bookTotal+":");}
}catch(InputMismatchException e) {
sc.nextLine();
System.out.print("输入错误,请输入1到"+book.bookTotal+":");
}
if(bookNum>=1&&bookNum<=book.bookTotal) {System.out.println("感谢您的使用,程序结束!");
}
}
}
}
第二个class文件,取名book
package lib;
public class book {
static int bookTotal = 8;//书的总数
private String a;
private int b;
public book(String a,int b){this.a=a;this.b=b;}
static book[] bookk = {new book("高数1",1),new book("高数2",2),
new book("线性代数",3),new book("离散数学",4),
new book("食品安全",5),new book("生物",6),
new book("化学",7),new book("英语",8)};
public String geta() {return a;} //调用该方法用于获取书的名称
public int getb() {return b;} //调用该方法用于获取书的序号
}
热门评论
建一个bookk什么意思?
使用了你的无限循环处理方法,感谢!如果有兴趣你也可以去看看我的代码http://www.imooc.com/article/20094
有问题的程序,按照书名照没反应