作者thinkniht ()
看板java
標題[問題] args[]的長度問題
時間Wed Oct 10 07:54:33 2007
我有寫一個程式
執行時要輸入3個參數來表示一個數學運算式子
例如:
2 + 12
30 - 2
中間固定放加減乘除符號
而我的程式中有對參數數量進行判斷
if(args.length!=3)
Error();//呼叫我另外寫的錯誤處理程式
但是我測試卻發現一個問題
如果我用*號
這個判斷式就會呼叫Error();
使用其他符號就正常
後來我輸出了args.length
發現如果用+ - /
長度是3(正常結果)
但是用了*
長度卻會變6
這是為什麼啊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.49.172
1F:推 kaomark:把args都印出來看看? 是不是*被shell當成萬用字元了 10/10 08:39
"是不是*被shell當成萬用字元了"
這部份我看不懂耶(對於推文都不知道該回還是該編輯>"<)
args我是有印出來啦
結果應該是"*"這個參數被整個資料夾裡的檔案名稱給取代了=.=
也就是有多少檔案就有多少參數取代*號的樣子
為何輸入"*"會有這樣的結果啊
有什麼方式可以避免這樣的影響嗎
※ 編輯: thinkniht 來自: 218.170.49.172 (10/10 08:59)
2F:推 kaomark:用""或''包住*試試看 10/10 09:01
用''包住的確有效...
雖然...這樣就和題目意思不合了=.=
算了...反正那個題目的範例答案也是錯的(會不會爛得誇張點啊XD)
不知道有沒有辦法正常的輸入*號但是可以正常執行的方法嗎
就是還是可以輸入像是"2 * 3" 或者"4 * 8"之類的參數
但是又不會影響到args長度
※ 編輯: thinkniht 來自: 218.170.49.172 (10/10 09:18)
3F:推 thinkniht:另外還是不知道"被shell當成萬用字元"是啥意思 10/10 09:19
4F:推 godfat:這種東西本來就應該用 "" 包起來,不是不和題目, 10/10 13:10
5F:→ godfat:應該說是題目不對,或是你太堅持了.. 合 10/10 13:11
6F:推 ogamenewbie:你要不要考慮用 x 取代 * 當輸入參數... 10/10 14:06
7F:推 thinkniht:我是最近想考TQC的認證=.=這是其中術科的一個問題 10/10 18:14
8F:→ thinkniht:題庫題目那樣 我也不太可能隨便改題目... 10/10 18:15