/*(book 类放在另一个类文件中)*/
package com.Partlibrary;
public class book {
int num;
String name;
public book(int num,String name)
{
this.num=num;
this.name=name;
}
}
package com.Partlibrary;
import java.util.Scanner;
public class Library {
static book[] books={new book(1,"算法导论"),new book(2,"java入门"),new book(3,"论语")};
int ways;//输入的方法
String s1;//输入的图书名字
int num;//输入的图书序号
public static void main(String[] args) {
Library l=new Library();
System.out.println("请输出查找方法,1 按照书名查找 2 按照序号查找");
Scanner scan=new Scanner(System.in);
for(int i=1;i>0;i++)
{
Scanner scan2=new Scanner(System.in);
if(scan2.hasNextInt())
{
l.ways=scan2.nextInt();
i=-i;
}
else
{
System.out.println("请输入正确的数字格式");
}
}
if(l.ways==1)
{
System.out.println("请输入图书的名字");
for(int i=1;i>0;i++)
{
try
{
Scanner scan1=new Scanner(System.in);
if(scan1.hasNextInt())//判断是整型
{
l.test1();//利用test抛出异常
}
else
{
l.s1=scan1.nextLine();//注意先进行判断然后在进行赋值操作
i=-i;
}
}catch(Exception e)
{
System.out.println("请输入正确的图书名字");
}
}
for(int i=0;i<l.books.length;i++)
{
if(l.books[i].name.equals(l.s1))
{
System.out.println("您已经成功借出《"+l.s1+"》 哈哈 ");
break;
}
if(i==l.books.length-1)
{
System.out.println("对不起,没有您想要的书目 ");
}
}//输入的书名需要遍历馆内已有图书的名字,所以在判断条件时增加了一个for
}
else if(l.ways==2)
{
System.out.println("请输入图书的编号");
for(int i=1;i>0;i++)
{
try
{
Scanner scan1=new Scanner(System.in);
if(scan1.hasNextInt())
{
l.num=scan1.nextInt();
if(l.num>0&&l.num<l.books.length+1)
{
System.out.println("已经成功借出《"+books[l.num-1].name+"》 啊哈哈");
i=-i;
}
else
l.test1();
}
else
l.test1();//抛出异常
}catch(Exception e)
{
System.out.println("请输入正确的数字格式");
}
}
}//第二种选择方式仅仅需要对比序号即可,直接在try当中进行判断
}
public void test1() throws Exception
{
throw new Exception();
}
}
打开App,阅读手记
热门评论
那个可能是没有关闭scanner,引起内存泄漏的问题。我试了关闭,可是程序会一直循环。不过咱们还没有仔细学习scanner类,不必纠结于此。本次终点是异常处理的部分,会用就好。不知回答的满意不~
我调试的时候发现第12行和第13行有错误。
欢迎各位幕有给出修改意见或个人建议