導航:首頁 > 編程語言 > 重新輸入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相關的資料

熱點內容
筆趣閣app哪個是正版手機app 瀏覽:427
程序員這個工作好嗎 瀏覽:898
agps定位伺服器地址 瀏覽:659
用水做的解壓玩具怎麼做 瀏覽:418
安卓411能下載什麼 瀏覽:304
小海龜logo命令 瀏覽:493
java製作界面 瀏覽:895
台達plc編程電纜製作 瀏覽:249
30多歲當程序員 瀏覽:442
怎樣把表格轉換成pdf 瀏覽:514
行列式分解演算法 瀏覽:291
mscoreedll是什麼文件夾修復 瀏覽:697
什麼app測臉型 瀏覽:43
cf手游刀戰演算法 瀏覽:318
北京壓縮米飯 瀏覽:554
施工員與程序員哪個好 瀏覽:207
vc與word編程 瀏覽:951
androidmenu文字顏色 瀏覽:983
安卓手機玩游戲怎麼會閃退 瀏覽:554
聲控解壓球要晾幾天才能晾乾呢 瀏覽:562