手记

作业:模拟借书系统(啦啦啦啦)

/*

  • 注: xxInstruction,NobooksHere 异常在该程序外定义了
  • 注: 在输入的时候得手动调整光标的位置,不知道该如何自动化,头疼。
  • 该程序执行时候只有完整正确一次才会执行完毕,一直错误则一直执行
  • 符合老师要求
  • 没有尝试运用do-while语句,导致结构很别扭。
  • 序号方面的指令错误直接统一为“错误的命令”(使用了正则表达式)
  • */
    package lib系统初;
    import java.util.Scanner;
    public class Lib {
    String book[]={"高数","线代","数据结构","系统","组成原理"};
    public static void main(String[] args) {
    rungogo();
    System.out.println("程序执行完毕");
    }
    public static void rungogo(){
    Lib KK=new Lib();
    String A=KK.InputInstrNumber();//输入命令序号
    switch(A){
    case "1":
    System.out.println("输入图书名称");
    KK.NameCheck();
    break;
    case "2":
    System.out.println("输入图书序号");
    KK.NumCheck();
    break;
    }
    }
    public String InputInstrNumber(){
    String check="[12]";
    System.out.println("输入命令:1.按书名查找;2.按序号查找");
    Scanner scanner = new Scanner(System.in);
    String input;
    input=scanner.next();
    try {
    if(!input.matches(check)){
    System.out.println("错误的命令");
    throw new xxInstruction();
    }

    } catch (xxInstruction e) {
        // TODO 自动生成的 catch 块
           InputInstrNumber();
    }
    return input;
    }//输入命令序号并检查的方法

    public void NameCheck(){
    try {
    Scanner scanner = new Scanner(System.in);
    String input;
    input=scanner.next();
    int a,i;
    //// for(int i=0;i<book.length&&input!=book[i];i++){//String比较不能简单的用==来比较
    // for(i=0;i<=book.length&&input.compareTo(book[i])!=0;i++){
    // if(i==book.length){
    // System.out.println("图书不存在");
    // throw new NobooksHere();
    // }//if
    // }//for
    // System.out.println("book:"+book[i]);
    for(i=0,a=0;i<book.length;){
    if(input.compareTo(book[i])!=0){
    a=i;
    i++;
    }
    else
    break;
    }//if
    if(i==book.length){
    System.out.println("图书不存在");
    throw new NobooksHere();
    }
    else
    System.out.println("book"+a+":"+book[a]);
    } catch (NobooksHere e) {
    rungogo();//这种处理方法导致只要发生错误,程序就不会停止,直到正确一次为止
    }
    }//输入图书名字进行检查的方法

    public void NumCheck(){
    try {
    String check="\D";
    Scanner scanner = new Scanner(System.in);
    String input;
    input=scanner.next();
    if(input.matches(check)){
    System.out.println("命令输入错误,请输入数字命令");
    throw new xxInstruction();
    }
    else{
    int number=Integer.parseInt(input);//强制类型转换,把输入的String类型转化成int类型
    if(number<0number>book.length){
    System.out.println("图书不存在");
    throw new NobooksHere();
    }
    else
    System.out.println("book:"+book[number-1]);
    }
    } catch (xxInstruction e) {
    NumCheck();
    }
    catch (NobooksHere e) {
    rungogo();//这种处理方法导致只要发生错误,程序就不会停止,直到正确一次为止
    }

    }
    }

3人推荐
随时随地看视频
慕课网APP