java 板


LINE

※ 引述《laruku2000 (阿本)》之銘言: : 最近寫了個小程式卻出現了問題,我需要能判定JTextField欄位輸入的值是IP位置,也就是 : 只能輸入255以下的數字,其他一律禁止,我是將IP位置分成4個JTextField來輸入,但我目 : 前使用的方法只想到幾種,都有問題如下 : 第一個 : xxx.getText().matches("[0-2][0-9][0-9]{1,3}") : 但這樣255是合法的,299卻是非法IP,無法抓出 : 另一個 : xxx.getText() < 256 : 雖然一定可限制在255以內,但若輸入非數字一樣抓不到 : 另一個 : xxx.getText() < 256 && xxx.getText().matches("[^a-zA-Z]") : 語法好像有點錯,限制在255以內及非大小寫a-z,語法較長且有4個欄位要確認,輸入符號或 : 中間有空格一樣抓不到 : 目前還想不到好方法,理論上用matches()會是最好的選擇,一律禁止限定格式以外的,只能 : 輸入0-2或0-9的數字,但255以上的數值不知該怎麼判別,大家有想到其他好方法嗎? 我是覺得你『一定可以』一起用,但是你『不想』或『不會』一起用, 就和你不會限制 0~256 卻只能用 0~299的判別一樣。 人就是要變通嘛!!!不會的時候除了學,就是硬幹啊~囧 學程式應該就知道沒有永遠"聰明"的選擇... 好啦,其實上面只是說笑的, 不過下次至少去Google一下regexp的用法, 我敢打賭除非你又省略了甚麼事情沒講(這樣就要翻桌啦), 不然上面match的 rule你一定沒測過, 你上面的rule是從 00 0 到 29 999,和你的255扯不上關係... 就IPv4的IP來講範圍值應該是0-255,不然就是我才疏學淺不曉得這個規則... 我的蠢解法大概也只比你本來的錯誤rule好一點,不過可以確實work。XD ──────────────────────────────── /* regexp中 () 內可視為一單位 , | 則代表 or */ String reg="([01]{0,1}[0-9]{1,2})|(2[0-4][0-9])|(25[0-5])"; //0-199 200-249 250-255 /*要養成測試結果的好習慣*/ for(int i=0;i<299;i++){ String t=""+i; System.out.println(t+" "+t.matches(reg)); } ──────────────────────────────── but 如果是我的話,我會寧願選擇 try{ int k= Integer.parseInt(t); if(k<0 || k>255 ) throw new NumerberFormatException("out of bound"); }catch(NumberFormatException e){ /* Show Warning Message */ } 該歸數學解決的就讓它歸數學解決啊...... ──────────────────────────────── 如果只是考慮到不想要Exception的問題,更簡單的變通作法是: int k=-1; if(t.matches("[0-9]+")){ k=Integer.parseInt(t); if(k<0||k>255) k=-1; } if(k==-1){ /* Show Warning Message */ } ──────────────────────────────── 連愚笨如我都能想到這些問題的解法了 , 這應該不會是很大的問題啊...囧 -- 鎖螺絲有螺絲起子不用,要用電動起子就算了, 連說明書也不看,結果用電動起子鑽不動還說螺絲起子不能用....大囧 -- String temp="relax"; | Life just like programing while(buringlife) String.forgot(temp); | to be right or wrong while(sleeping) brain.setMemoryOut(); | need not to say stack.push(life.running); | the complier will stack.push(scouting.buck()); | answer your life stack.push(bowling.practice()); | Bone everything --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.27.68 ※ 編輯: TonyQ 來自: 220.134.27.68 (01/09 17:20) ※ 編輯: TonyQ 來自: 220.134.27.68 (01/09 17:22)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP