亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

求教下大神 我如果不把 Scanner input = new Scanner(System.in);在每個方法中都重新定義一下,為什么在異常時候不會讓我重新輸入,就會陷入無盡循環。

package com.Project3;

import java.util.InputMismatchException;

import java.util.Scanner;


public class Test {

public void findBook(){

for(int i = 1;;){

try{

System.out.println("輸入命令:1-按照書名查書;2-按照序號查書");

Scanner input = new Scanner(System.in);

int k = input.nextInt();

String name;

if(k == 1){

name = getbookname();

System.out.println("book:"+name);

break;

}

if(k==2){

name = getbooknum();

System.out.println("book:"+name);

break;

}

else {

System.out.println("輸入有誤");

continue;

}

}catch(InputMismatchException e){

System.out.println("命令輸入錯誤!請根據指令輸入數字命令!");

}

catch(Exception e){

System.out.println(e.getMessage());

}

continue;

}

}

public String getbookname() throws Exception{

Scanner in = new Scanner(System.in);

System.out.println("請輸入圖書名稱:");

String name = in.next();

if(name.equals("高數")){

return name;

}else{

throw new Exception("圖書不存在!");

}

}

public String getbooknum() throws Exception{

while(true){

System.out.println("請輸入圖書序號:");

Scanner in = new Scanner(System.in);

int num = in.nextInt();

try{

if(num == 1){

return "數據結構";

}else{

throw new Exception("圖書不存在");

}

}catch(InputMismatchException e){

throw new Exception("命令輸入錯誤!請根據指令輸入數字命令");

}

}

}

public static void main(String[] args) {

Test c = new Test();

c.findBook();

}

}



正在回答

2 回答

我的意思是把Scanner放在外部,然后每個方法輸入時候都調用,如果普通循環都會返回讓重新輸入,但是有拋出異常的循環,拋出異常后就陷入無盡循環了,不會再讓你輸入信息了。

0 回復 有任何疑惑可以回復我~

因為在方法體中定義的只在該方法體中有效啊

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

Youngkos 提問者

我的意思是把Scanner放在外部,然后每個方法輸入時候都調用,如果普通循環都會返回讓重新輸入,但是有拋出異常的循環,拋出異常后就陷入無盡循環了,不會再讓你輸入信息了。
2017-05-16 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求教下大神 我如果不把 Scanner input = new Scanner(System.in);在每個方法中都重新定義一下,為什么在異常時候不會讓我重新輸入,就會陷入無盡循環。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號