#24486: Java 的提示


My2020Java (Java練習生)

學校 : 不指定學校
編號 : 135581
來源 : [27.51.88.103]
最後登入時間 :
2024-04-28 21:37:16
b331. NOIP2013 2.表达式求值 -- NOIP2013普及组第二题 | From: [39.12.28.95] | 發表日期 : 2021-02-25 18:36

Java 寫這題,用 StringTokenizer 來處理

StringTokenizer tok = new StringTokenizer(bufR.readLine(),"+*",true);

將加號、乘號作為分隔符,後面處理就很容易了

PS : bufR.readLine() 是讀取一行測資,至於怎麼讀請自己思考

 
#34778: Re: Java 的提示


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [122.116.111.175]
最後登入時間 :
2024-04-30 21:28:05
b331. NOIP2013 2.表达式求值 -- NOIP2013普及组第二题 | From: [118.166.135.162] | 發表日期 : 2023-04-16 00:25

我認為ForEach迴圈在這裡也很好用
for(String s: new java.io.BufferedReader(new java.io.InputStreamReader(System.in)).readLine().split("\\+"))
先把要+的區塊拆出來,再使用
for(String s1: s.split("\\*"))
把s1轉int並且乘起來
這樣兩層ForEach就能把這題處理完了
可能沒有StringTokenizer快,但是還滿方便的。

註:
這裡呼叫split的參數比較特別,因為它要符合「Regex正規表示式」,我的這篇解題報告有詳細介紹到它:
https://zerojudge.tw/ShowThread?postid=34387&reply=0

 
ZeroJudge Forum