第一章的作業(yè)參考修改一下,程序運(yùn)行有問(wèn)題,請(qǐng)大家指教!
?
package com.imooc.test;
import java.util.Scanner;
public class LibraryManager {
?//創(chuàng)建Scanner對(duì)象console
?private static Scanner console = new Scanner(System.in);
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??//定義”圖書(shū)“數(shù)組
????String[] books = { "C語(yǔ)言", "數(shù)據(jù)結(jié)構(gòu)", "匯編語(yǔ)言", "高數(shù)", "大學(xué)語(yǔ)文", "毛概" };
????while (true) {
?????System.out.println("歡迎來(lái)到圖書(shū)管理系統(tǒng)!");
?????System.out.println("輸入命令:1-按照名稱查找圖書(shū);2-按照序號(hào)查找圖書(shū)");
?????String book;
?????try {
??????//取得整型命令
??????int command =console.nextInt();
??????//根據(jù)不同命令值,進(jìn)行不同操作
??????switch (command) {
??????case 1://按照?qǐng)D書(shū)名稱選擇圖書(shū)
???????book = getBookByName(books);
???????System.out.println("book:" + book);
???????break;//退出循環(huán),進(jìn)行循環(huán)后面的代碼
??????case 2://按照?qǐng)D書(shū)序號(hào)(數(shù)組下標(biāo))選擇圖書(shū)
???????book = getBookByNumber(books);
???????System.out.println("book:" + book);
???????break;
??????/*case -1://返回值為-1,說(shuō)明輸入有誤
???????System.out.println("命令輸入錯(cuò)誤!請(qǐng)根據(jù)提示輸入數(shù)字命令!");
???????continue;//結(jié)束本次循環(huán),直接進(jìn)入下次循環(huán)*/
??????default://其他值的命令均認(rèn)為是錯(cuò)誤命令
???????System.out.println("命令輸入錯(cuò)誤!請(qǐng)根據(jù)提示輸入數(shù)字命令!");
???????continue;
??????}
??????break;//退出程序
?????} catch (Exception bne) {
??????//捕獲”圖書(shū)不存在異?!皶r(shí),要求重新輸入命令
??????System.out.println(bne.getMessage());
??????continue;
?????}
????}
???}
???//按照?qǐng)D書(shū)名稱查詢圖書(shū)
???private static String getBookByName(String[] books)
?????throws Exception {
????System.out.println("輸入圖書(shū)名稱:");
????//獲取輸入的圖書(shū)名稱
????String name = console.next();
????for (int i = 0; i < books.length; i++) {
?????if (name.equals(books[i]))
??????//輸入的名稱與某一圖書(shū)名稱匹配,返回該圖書(shū)
??????return books[i];
????}
????//若無(wú)匹配,拋出”圖書(shū)不存在異常“
????throw new Exception("圖書(shū)不存在!");
???}
???//根據(jù)圖書(shū)序號(hào)(數(shù)組下標(biāo))查詢圖書(shū)
???private static String getBookByNumber(String[] books)
?????throws Exception {
????//while (true) {
?????System.out.println("輸入圖書(shū)序號(hào):");
?????try {
??????//獲取輸入的圖書(shū)序號(hào)(數(shù)組下標(biāo))
??????int index = console.nextInt();
??????//若返回值為-1
??????/*if(index == -1){
???????System.out.println("命令輸入錯(cuò)誤!請(qǐng)根據(jù)提示輸入數(shù)字命令!");
???????continue;
??????}*/
??????//若不出現(xiàn)”數(shù)組下標(biāo)越界異常“,則返回相應(yīng)位置的圖書(shū)
??????String book = books[index];
??????return book;
?????} catch (ArrayIndexOutOfBoundsException e) {
??????//輸入的序號(hào)不存在(引發(fā)”數(shù)組下標(biāo)越界異?!埃?,則拋出”圖書(shū)不存在異?!?br />??????Exception bookNotExists = new Exception("圖書(shū)不存在!");
??????bookNotExists.initCause(e);
??????throw bookNotExists;
?????}
????}
??}?
2016-07-16
private static Scanner console = new Scanner(System.in);為什么要在Scanner前面加private static
2016-05-12
package com.imooc.proj_1;
import java.util.Scanner;
public class BookManagerEasy {
private static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
// 定義”圖書(shū)“數(shù)組
String[] books = { "C語(yǔ)言", "數(shù)據(jù)結(jié)構(gòu)", "匯編語(yǔ)言", "高數(shù)", "大學(xué)語(yǔ)文", "毛概" };
while (true) {
System.out.println("輸入命令:1-按照名稱查找圖書(shū);2-按照序號(hào)查找圖書(shū)");
String book;
try {
// 取得整型命令
int command = inputCommand();
// 根據(jù)不同命令值,進(jìn)行不同操作
switch (command) {
case 1:// 按照?qǐng)D書(shū)名稱選擇圖書(shū)
book = getBookByName(books);
System.out.println("book:" + book);
break;
case 2:// 按照?qǐng)D書(shū)序號(hào)(數(shù)組下標(biāo))選擇圖書(shū)
book = getBookByNumber(books);
System.out.println("book:" + book);
break;
case -1:// 返回值為-1,說(shuō)明輸入有誤
System.out.println("命令輸入錯(cuò)誤!請(qǐng)根據(jù)提示輸入數(shù)字命令!");
continue;
default:// 其他值的命令均認(rèn)為是錯(cuò)誤命令
System.out.println("命令輸入錯(cuò)誤!");
continue;
}
break;// 退出程序
} catch (Exception bne) {
// 捕獲”圖書(shū)不存在異?!皶r(shí),要求重新輸入命令
System.out.println(bne.getMessage());
continue;
}
}
}
// 按照?qǐng)D書(shū)名稱查詢圖書(shū)
private static String getBookByName(String[] books) throws Exception {
System.out.println("輸入圖書(shū)名稱:");
// 獲取輸入的圖書(shū)名稱
String name = console.next();
for (int i = 0; i < books.length; i++) {
if (name.equals(books[i]))
// 輸入的名稱與某一圖書(shū)名稱匹配,返回該圖書(shū)
return books[i];
}
// 若無(wú)匹配,拋出”圖書(shū)不存在異?!?/p>
throw new Exception("圖書(shū)不存在!");
}
// 根據(jù)圖書(shū)序號(hào)(數(shù)組下標(biāo))查詢圖書(shū)
private static String getBookByNumber(String[] books) throws Exception {
while (true) {
System.out.println("輸入圖書(shū)序號(hào):");
try {
// 獲取輸入的圖書(shū)序號(hào)(數(shù)組下標(biāo))
int index = inputCommand();
// 若返回值為-1
if (index == -1) {
System.out.println("命令輸入錯(cuò)誤!請(qǐng)根據(jù)提示輸入數(shù)字命令!");
continue;
}
// 若不出現(xiàn)”數(shù)組下標(biāo)越界異?!?,則返回相應(yīng)位置的圖書(shū)
String book = books[index];
return book;
} catch (ArrayIndexOutOfBoundsException e) {
// 輸入的序號(hào)不存在(引發(fā)”數(shù)組下標(biāo)越界異?!埃?,則拋出”圖書(shū)不存在異?!?/p>
Exception bookNotExists = new Exception("圖書(shū)不存在!");
bookNotExists.initCause(e);
throw bookNotExists;
}
}
}
// 從控制臺(tái)輸入命令,用于輸入命令和輸入圖書(shū)序號(hào)
private static int inputCommand() {
int command;
try {
command = console.nextInt();
return command;
} catch (Exception e) {
// 若輸入字符型或者字符串,則拋出異常,捕獲該異常,拋出”錯(cuò)誤命令異常“
console = new Scanner(System.in);
// 返回-1
return -1;
}
}
}