導航:首頁 > 編程語言 > 重新輸入java

重新輸入java

發布時間:2024-02-05 02:26:00

A. java基礎,關於流程式控制制的問題:輸入錯誤,提示錯誤並且重新輸入。 這個快把我整崩潰了,請大家幫幫我

題主的問題大體就是如何判斷用戶的輸入是否合法。這里最方便的就是使用正則表達式(Regular Expression,簡稱 Regex)。


正則表達式是一個字元串,它代表的是一定的字元串模式(比如郵箱的模式就是 "數字或字母 + @ + 數字或字母 + . + 頂級域名名稱"),當用戶輸入一個字元串時,符合這個模式的字元串會通過驗證,而不符合的則會匹配失敗。現在幾乎所有網站的郵箱密碼身份證號等的驗證都會使用正則表達式。


Java 的 String 類自帶有一個 matches 方法提供了簡單的正則表達式匹配功能,只需使用這個方法就可以完成你要求的匹配任務。代碼如下:


importjava.util.Scanner;

publicclassMyTest{

//用於匹配身份選擇和收入的正則表達式
privatefinalStringIDENTITY_REGEX="[0-2]";
privatefinalStringINCOME_REGEX="[0-9]*\.?[0-9]*";

//代表身份和收入的字元串
privateStringstatus_string;
privateStringincome_string;

//轉換為int和double後的身份和收入
privateintstatus;
privatedoubleincome;

publicvoidComputTax(){

Scannerinput=newScanner(System.in);

//一直循環直到到達break語句退出
while(true){
System.out.println("0-單身納稅人,1-已婚共同納稅人,2-已婚單獨納稅人"+
" "+"請選擇你要納稅的身份:");

//讀取用戶輸入的原始字元串並與正則表達式相匹配
status_string=input.nextLine();
//匹配失敗會返回while一開始
if(!status_string.matches(IDENTITY_REGEX)){
System.out.println("輸入錯誤,只能輸入0~2之間的數");
continue;
}

//匹配成功則會將輸入轉換為整數並退出循環
status=Integer.parseInt(status_string);
break;
}

//同理
while(true){

System.out.println("請輸入你的收入:");

income_string=input.nextLine();

if(!income_string.matches(INCOME_REGEX)){
System.out.println("收入輸入有誤,請重新輸入");
continue;
}

income=Double.parseDouble(income_string);
break;

}

//輸出相應的稅收
if(status==0){

//使用printf保留兩位小數,不然double輸出的精度太多影響可讀性
System.out.printf("你選擇的身份是單身納稅人 你應當繳納的稅收為:%.2f元 ",
income*0.1);

}elseif(status==1){

System.out.printf("你選擇的身份是已婚共同納稅人 你應當繳納的稅收為:%.2f元 ",
income*0.2);

}else{

System.out.printf("你選擇的身份是已婚單獨納稅人 你應當繳納的稅收為:%.2f元 ",
income*0.3);

}
}

publicstaticvoidmain(String[]args){

System.out.println("------------------歡迎使用納稅查詢--------------------");
MyTestmyTest=newMyTest();
myTest.ComputTax();


}

}


運行結果為:



有關正則表達式的寫法,請參考

http://deerchao.net/tutorials/regex/regex.htm

閱讀全文

與重新輸入java相關的資料

熱點內容
聯想伺服器怎麼進後台 瀏覽:112
安卓定製rom怎麼刷 瀏覽:537
三層交換機的配置命令 瀏覽:108
49演算法公式 瀏覽:788
求最小生成樹演算法代碼及運行圖片 瀏覽:930
python掃雷計數 瀏覽:879
什麼安卓手機品牌最保值 瀏覽:843
編程貓買房子 瀏覽:134
c語言系列編程 瀏覽:742
符合國標加密標准技術 瀏覽:496
加密狗介面會壞嗎 瀏覽:625
javame開發 瀏覽:380
python3偽裝瀏覽器 瀏覽:242
信息聯想伺服器專班是干什麼的 瀏覽:99
python獲取cpu個數 瀏覽:864
命令提示符查網速 瀏覽:229
對於某個理論演算法可以直接抄嗎 瀏覽:188
如何訪問ftp伺服器下載文件 瀏覽:392
呼蘭程序員吐槽剪輯 瀏覽:493
python計運算元網掩碼 瀏覽:57