为了账号安全,请及时绑定邮箱和手机立即绑定

我想问一下,输入错误之后怎样才能让用户重新输入呢?

package com.jersey;

import java.util.*;

import javax.sql.rowset.spi.SyncFactoryException;


public class LibSystem {
	static Book[] books={new Book("论语","000001"),new Book("老子","000002"),new Book("java编程思想","000003")};
	public static void main(String[] args){

		System.out.println("欢迎来到iLibrary图书检索系统!");
		Scanner input=new Scanner(System.in);
		System.out.println("请选择:1.按书名检索 2.按编号检索 3.退出系统");
		
		int n=input.nextInt();
		switch(n){
			case 1:				
				System.out.println("请输入您所要检索的图书名称");
				String a=input.next();
				try{
					String result=SearchByName(a);
					System.out.println("您所选的《"+result+"》已找到");
					}catch(Exception e){
						e.printStackTrace();
						System.out.println("您检索的图书不存在!");
						
					}
					break;
			case 2:
				System.out.println("请输入您所要检索的图书编码");
				String b=input.next();
				try{
				String result2=SearchByCode(b);
				System.out.println("您所选的《"+result2+"》已找到");
				}catch(Exception e){
					e.printStackTrace();
					System.out.println("您输入的编码有误,请重新输入!");
				}
				break;
			case 3:
				System.exit(0);
			default:
				System.out.println("您的输入有误!请重新输入!");
		}
		
		}
		
		public static String SearchByName(String a) throws Exception{
			
			for(int i=0;i<books.length;i++){
				if(a.equals(books[i].name)){
					continue;
				}
				else{
					throw new Exception();
				}
				
			}
			return a;
		}
		public static String SearchByCode(String b) throws Exception{
			String s2=b;
			for(int i=0;i<books.length;i++){
				if(b.equals(books[i].code)){
					s2=books[i].name;
					break;
				}
				else{
					throw new Exception();
				}
				}
			return s2;	
	}
	
		
}

诸位还有什么改进的建议也请告诉我,谢谢!

正在回答

5 回答

	public static void main(String[] args) {
		service();
	}
	
	public static void service(){
		System.out.println("欢迎来到iLibrary图书检索系统!");
		
		Scanner input = new Scanner(System.in);
		System.out.println("请选择:1.按书名检索 2.按编号检索 3.退出系统");
		int n = input.nextInt();
		switch (n) {
		case 1:
			System.out.println("请输入您所要检索的图书名称");
			String a = input.next();
			try {
				String result = SearchByName(a);
				System.out.println("您所选的《" + result + "》已找到");
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("您检索的图书不存在!");
			}
			service();
			break;
		case 2:
			System.out.println("请输入您所要检索的图书编码");
			String b = input.next();
			try {
				String result2 = SearchByCode(b);
				System.out.println("您所选的《" + result2 + "》已找到");
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("您输入的编码有误,请重新输入!");
			}
			service();
			break;
		case 3:
			System.out.println("结束!");
			break;
		default:
			System.out.println("您的输入有误!请重新输入!");
			service();
		}
	}
	
	public static String SearchByName(String a) throws Exception {

		return "by name";
	}

	public static String SearchByCode(String b) throws Exception {
		return "by code";
	}

我这没有Book类,模拟一下吧

2 回复 有任何疑惑可以回复我~
#1

jerseyyu 提问者

谢谢!
2015-08-12 回复 有任何疑惑可以回复我~
#2

jerseyyu 提问者

非常感谢!
2015-08-15 回复 有任何疑惑可以回复我~
#3

jerseyyu 提问者

我有一个疑问,在定义某方法的时候调用其本身是怎样的原理,感觉有点奇怪 0.0
2015-08-26 回复 有任何疑惑可以回复我~
#4

管理員 回复 jerseyyu 提问者

上面代码是在你的代码基础上修改的,也就花了两三分钟,并没有想太多,可能不太好理解。调用本身其实跟调用其他方法一样的,不过一般有个结束条件。
2015-08-27 回复 有任何疑惑可以回复我~
#5

武庚_Rehan

这个是截图吗?是怎么截成这样的?谢谢回答
2015-09-02 回复 有任何疑惑可以回复我~
#6

陶路

那个default后面的service();是做什么的 谢谢解答
2015-10-19 回复 有任何疑惑可以回复我~
#7

mr1024 回复 陶路

....调用方法
2015-11-05 回复 有任何疑惑可以回复我~
查看4条回复

示例代码中的异常处理也有问题啊,压根不能判断输入的信息是否与已有数据相匹配,而且真心不明白这里的两个异常处理有什么作用!

1 回复 有任何疑惑可以回复我~

也可以尝试一下

boolean  retry=true;

                 while(needretry){

                  try{

                                //执行的代码块1

                                retry=false;//没有错误不需要重来

                      }catch(Exception e){

                                    //执行代码块2

                                      retry=true;//有错误,要重来  

                                            }

                                               }

这个模板只是大概的,你可以根据需要添加其他条件语句及判断。

亲测有效

0 回复 有任何疑惑可以回复我~
#1

jerseyyu 提问者

感谢,学习了
2015-08-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我想问一下,输入错误之后怎样才能让用户重新输入呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信