關于控制臺中輸入字符,會把程序輸出的字符覆蓋??!怎么辦?看代碼
public static void main(String[] args) {
String[] a = { "論語","三字經"};
System.out.println("歡迎使用啪啪啪借閱系統:");
int n =0;
while(n==0){
try{
System.out.println("1.按書名借閱書籍 ? ? ?2.按序號借閱書籍");
//在控制臺輸入數字命令 ?,這里可能出現異常
Scanner input = new Scanner(System.in);
int number = input.nextInt();
//如果控制臺輸入數字1
if(number==1){
//遍歷數組,輸出a[i]中的元素:各個書籍
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
System.out.println("請輸入您要借閱書籍的名稱:");
//在控制臺輸入字符串?
Scanner input2 =new Scanner(System.in);
String name = input2.nextLine();
//對控制臺輸入的字符串進行 ?判斷
if(name.equals(a[0])){
System.out.println("您要借閱的書籍為:"+a[0]);
}else if(name.equals(a[1])){
System.out.println("您要借閱的書籍為:"+a[1]);
}else{
System.out.println("您輸入的書籍不存在");
}
}
//當控制臺輸入2 (用序號選擇書籍時)
else{
//為了方便就沒有遍歷了
System.out.println("1.論語 ? ? 2.三字經 ? "+"請輸入序號:");
Scanner input3 = new Scanner(System.in);
? ?int number2 = input3.nextInt();
? ?//對控制臺輸入的序號進行判斷,這里可能出現異常
? ?if(number2==1){
? ? System.out.println("您要借閱的書籍為:"+a[0]);
? ?}else if(number2==2){
? ? System.out.println("您要借閱的書籍為:"+a[1]);
? ?}else{
? ? System.out.println("請輸入已提示的數字序號");
? ?}
}
n = 1;
//開始捕獲可能出現的異常
}catch(InputMismatchException e){
System.out.println("命令輸入錯誤,請根據提示輸入數字命令");
n=0;
}catch(Exception e){
System.out.println("Exception系統未知故障");
n=0;
}finally{
System.out.println("啪啪啪");
n=0;
} ? ?
?} ? ? }
2017-01-23
您好啊同學,我剛才看了您寫的代碼,總的來說還是很好的.當然了,您的這個問題我以前也遇到過當時就沒有去管他.
剛才我看了一會代碼,給你想了一個簡單粗暴一點的方法,就是再"請輸入您的balabala"那兒的前面加上\n
就可以實現自動轉行了.但是這個方法治標不治本,如圖所示,在前面多了一行空格.你也可以試一試自己的方法,用這個原理把那行空格給弄走.另外\n的意思就是把光標轉到下一行的意思.是在字符串中使用的,與此類似的還有\t和\r等.我這種屬于是利用腦洞把問題解決的了蛤蛤蛤 ,另外如果有興趣一起學習的話,1114196607這是我的QQ
2017-01-23
如圖所示:論語倆字把程序輸出的“論語” 覆蓋掉了變綠了,本應該是在最后一排輸出的,,,
2017-01-23
我是個初學者,作業能寫出來都對自己感覺不錯了;如有前輩能不介意幫幫我,表示十分感謝?。。?/p>
我的問題是:當控制臺里提示:論語、三字經時;讓用戶輸入字符時,光標不會自動轉行,而是把程序中的漢字覆蓋了,然后就沒有然后。。。
必須 自己把光標放在最下面才可以