2016-03-14 24 views
1

我正在創建一個簡單的搖滾紙剪刀遊戲,我必須根據我選擇的數字變體(0 =剪刀,1 =搖滾,2 =紙張)從Android接收隨機輸出。如何接收Android中的隨機開關語句的輸出?

這是非常完整的,但是當我輸入一個數字並點擊'shoot'按鈕時,我在任何一個TextView中都沒有輸出。

package com.example.brandon.rockpaperscissors; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.text.DecimalFormat; 
import java.util.Random; 
import java.util.Scanner; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final EditText player = (EditText) findViewById(R.id.txtPlayer); 
     final TextView android = (TextView) findViewById(R.id.txtAndroid); 
     final TextView result = (TextView) findViewById(R.id.txtResult); 
     Button shoot = (Button) findViewById(R.id.btnShoot); 

     shoot.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int num = (int)(Math.random() * (3) + 0); 

       switch (num) { 

        //If computer picks scissors 
        case 0: 

         if (player.equals('0')) { 

          android.setText("0!"); 
          result.setText("It's a Tie!"); 

         } else if (player.equals('1')) { 

          android.setText("0!"); 
          result.setText("You Win!"); 

         } else if (player.equals('2')) { 

          android.setText("0!"); 
          result.setText("Android Wins!"); 

         } 
         break; 

        //If computer picks rock 
        case 1: 

         if (player.equals('0')) { 

          android.setText("1!"); 
          result.setText("Android Wins!"); 

         } else if (player.equals('1')) { 

          android.setText("1!"); 
          result.setText("It's a Tie!"); 

         } else if (player.equals('2')) { 

          android.setText("1!"); 
          result.setText("You Win!"); 

         } 
         break; 

        //If computer picks paper 
        case 2: 

         if (player.equals('0')) { 

          android.setText("2!"); 
          result.setText("You Win!"); 

         } else if (player.equals('1')) { 

          android.setText("2!"); 
          result.setText("Android Wins!"); 

         } else if (player.equals('2')) { 

          android.setText("2!"); 
          result.setText("It's a Tie!"); 

         } 
         break; 

       } 
      } 

     }); 

     } 
    } 

任何幫助將不勝感激,謝謝!

+0

嘗試不使用「player.equals」,使用「player.getText()。toString()。equals」 – huskyd97

回答

1

你的問題是,你要比較的是玩家輸入錯誤,即這裏是正文:

if (player.equals('0')) { 

正如你所看到的,playerEditText類型。所以如果你將一個EditText與一個角色進行比較,它總是評估爲false,因爲它們是完全不同的東西。我想你其實想要比較編輯文本的文本0,對不對?就像這樣:

if (player.getText().toString().equals("0")) { 

您也可以在通話添加到trim()使空白字符將被忽略:

if (player.getText().toString().trim().equals("0")) { 

另外,記得要改變對方錯誤的if語句也是如此。

+0

很好地提及***。trim()*** :) –

+0

非常感謝你澄清if語句,它完美地工作! :D – Throughout

+0

@Throughout如果您認爲我的答案回答了您的問題,請考慮通過點擊投票下面的綠色勾號來接受它! – Sweeper

-1

您不打印任何輸出。這就是你沒有得到輸出的原因。

+0

不,我認爲他的意思是「沒有獲得文本視圖的文本改變」。當然,logcat中沒有輸出。 – Sweeper

+0

他沒有實現將文本結果的更新值設置爲文本視圖的命令。 –

+0

而且我認爲最終變量只能初始化一次。 –

1

我認爲你沒有得到任何輸出的原因是因爲你從玩家EditText檢索文本的方式。從一個EditText檢索文本的正確方法是,像這樣:

player.getText().toString(); 

只有這樣,你應該使用.equals像這樣:

player.getText().toString().equals("0") 

嘗試,並且告訴我,如果它的工作原理。有關EditTexts的更多信息。點擊這裏 - EditText