天天看點

如何解決提示the operation % is undefined for the argument type string,int的錯誤

今天在做一個用三元運算符判斷奇偶的小練習時遇到“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,如需轉載請自行聯系原作者

繼續閱讀