2013-08-17 49 views
1

所以,我有我的這個android數學遊戲。我很難弄清楚爲什麼我得到了這些錯誤,並嘗試在互聯網上找到一些代碼,但它不工作。在parseInt行中的錯誤

我在下面的代碼沒有錯誤。但是當我嘗試運行它時,我的logcat出現錯誤。

check.setOnClickListener(new OnClickListener(){ 

     int x = Integer.valueOf(fn.getText().toString()); 
     int y = Integer.valueOf(sn.getText().toString()); 

     public void onClick(View v){ 
     String ope = op.getText().toString(); 


     if(ope=="+"){ 
      if(x + y == total2){ 
       Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show(); 
      } 
     } 

     if(ope=="-"){ 
      if(x-y==total2){ 
       Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show(); 
      } 
     } 


     if(ope=="*"){ 
      if(x*y==total2){ 
       Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show(); 
      } 
     } 

     if(ope=="/"){ 
      if(x/y==total2){ 
       Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show(); 
      } 
      else if(y/x==total2){ 
       Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show(); 
      } 

     } 


     }}); 

,這裏是我的logcat:

enter image description here

我解析是正確的,對不對?那麼,爲什麼我有這些錯誤?

注意: fn和sn是textViews,也是op。 fn和sn是用戶放置操作數的地方,op是操作員。遊戲中給出了這個隨機數,用戶應該點擊2個操作數和一個操作符來創建一個方程,並能夠提供給定的隨機數。她/他的方程的結果應該與給定的隨機數相同。

三江源:)

+0

您代碼中的哪個視圖元素是fn? – Peshal

+0

這是一個textView。 – pingboo23

+0

ok試試這個:int x = Integer.parseInt(String.valueOf(fn.getText())); – Peshal

回答

3

你的代碼有兩個問題。首先亨利在答覆中提到,你需要把這些行:

int x = Integer.valueOf(fn.getText().toString()); 
    int y = Integer.valueOf(sn.getText().toString()); 

onClick方法

第二個問題是,你正在使用==做在所有if檢查的字符串比較的內,如:

 if(ope=="+") 

您應該使用String equals()方法來進行字符串比較。更改它和其他如果使用條件equals方法,這裏提到:

 if(ope.equals("+")) 

==比較兩個引用是否指向同一個內存位置,而equals()做字符串的內容比較。

+1

@ pingboo23這是因爲你的字符串'16'中有空格。使用此處指定的trim方法int x = Integer.valueOf(fn.getText()。toString()。trim()); int y = Integer.valueOf(sn.getText()。toString()。trim()); –

+0

非常感謝:)它的作品! – pingboo23

+0

我剛剛刪除了任何其他空間,它工作正常,無需修剪它。順便說一句,已經投了它:) – pingboo23

2

問題是,當你裝上的onClick監聽器,你得到的xy值。當時這些字段仍然是空的。

爲了解決這個問題將這些行

int x = Integer.valueOf(fn.getText().toString()); 
    int y = Integer.valueOf(sn.getText().toString()); 

onClick方法的內部。

+0

我會試試這個。 – pingboo23

+0

我試過了,一開始工作正常。但是當我嘗試點擊檢查按鈕時,它說「強制關閉」。雖然我的答案是正確的。它應該打印我的回答是正確的。 – pingboo23

+0

logcat中有什麼異常? – Henry