今天在做一個用三元運算符判斷奇偶的小練習時遇到“the operation % is undefined for the argument type string,int”錯誤的小插曲
開始的程式是這樣寫的
1
2
3
4
5
6
7
8
9
10
11
<code>package</code> <code>com.lixiyu;</code>
<code>import</code> <code>java.util.Scanner;</code>
<code>public</code> <code>class</code> <code>ParityCheck {</code>
<code>public</code> <code>static</code> <code>void</code> <code>main(String[] args){</code>
<code> </code><code>Scanner sc=</code><code>new</code> <code>Scanner(System.in);</code>
<code> </code><code>System.out.println(</code><code>"請輸入一個整數:"</code><code>);</code>
<code> </code><code>String line=sc.nextLine();</code>
<code> </code><code>String flag=((line%</code><code>2</code><code>)==</code><code>0</code><code>)?</code><code>"偶數"</code><code>:</code><code>"奇數"</code><code>;</code>
<code> </code><code>System.out.println(</code><code>"這個數字是:"</code><code>+flag);</code>
<code>}</code>
這是我的寫法,但它會提示無法确定類型String,int無法正常使用%的問題,要用%得是整型嘛。是以後來google看到國外論壇有遇到類型問題,他給的解決方法是:Assuming what the user inputs is really a number, you can use Integer.parseInt(weight) and compare that.
意思也就是要讓line轉換為整型的數,即用到Integer.parseInt()即可解決故改一下下面為
String flag=(Integer.parseInt(line)%2==0)?"偶數":"奇數"; 可以正常運作編譯
自己寫的正常運作的代碼:
<code> </code><code>String flag=(Integer.parseInt(line)%</code><code>2</code><code>==</code><code>0</code><code>)?</code><code>"偶數"</code><code>:</code><code>"奇數"</code><code>;</code>
後來看了看書本上給出的參考答案:
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>
<code> </code><code>Scanner scan = </code><code>new</code> <code>Scanner(System.in);</code><code>// 建立輸入流掃描器</code>
<code> </code><code>System.out.println(</code><code>"請輸入一個整數:"</code><code>);</code>
<code> </code><code>long</code> <code>number = scan.nextLong();</code><code>// 擷取使用者輸入的整數</code>
<code> </code><code>String check = (number % </code><code>2</code> <code>== </code><code>0</code><code>) ? </code><code>"這個數字是:偶數"</code> <code>: </code><code>"這個數字是:奇數"</code><code>;</code>
<code> </code><code>System.out.println(check);</code>
<code> </code><code>}</code>
它書本上面用到的是long(長整型)從擷取使用者輸入資料上就已經控制了整數輸入。貌似會更友善點。
路還長,繼續學習。
本文轉自lixiyu 51CTO部落格,原文連結:http://blog.51cto.com/lixiyu/1302769,如需轉載請自行聯系原作者