使用 toString()

我正在开发一个简单的 android 骰子游戏,其中 2 名玩家轮流滚动,如果你得到双打你就赢了。我正在尝试使用 toString 输出到当玩家在双打时获胜的祝酒词。


这是我的代码:


public class MainActivity extends AppCompatActivity {


public static final Random RANDOM = new Random();

private Button rollDice;

int player = 1;

private ImageView dice1, dice2;

TextView display;

boolean rolling = false;


@NonNull

public String toString(){

    return String.valueOf(player);

}


    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    rollDice = (Button) findViewById(R.id.rollDice);

    dice1 = (ImageView) findViewById(R.id.dice1);

    dice2 = (ImageView) findViewById(R.id.dice2);

    display = (TextView) findViewById(R.id.display);

其次是我的 onclick 方法和 random.nextInt 和我的开关案例。


然后我在 toast 中调用 toString:


                if (d1 == d2){


                Context context = getApplicationContext();

                String text = "Player " + toString() + " wins!";

                int duration = Toast.LENGTH_SHORT;


                Toast toast = Toast.makeText(context, text, duration);

                toast.show();


            }


            if (player == 1){


                player = 2;

            }

            else{

                player = 1;

            }

然后它输出“玩家 com.ellis.newdice.MainActivity$1然后随机数获胜”


我是错误地使用了 toString 方法还是 int 播放器没有正确使用?


青春有我
浏览 146回答 4
4回答

繁花如伊

player是一个int,所以在这种情况下你不需要一个toString方法:String text = "Player " + player + " wins!";另外,删除该public String toString()方法,因为您可能对默认Activity.toString()方法有问题....

慕丝7291255

你使用它的toString()方式,你的活动类的方法被调用,这就是你看到的原因com.ellis.newdice.MainActivity$1。你不需要toString()达到你想要的。用这个:String text = "Player " + winner + " wins!";winner使用您在代码中为获胜玩家使用的变量(整数?)进行更改。

慕盖茨4494581

看起来你调用它的对象实际上不是你的MainActivity,而是它内部的一些匿名内部类,可能是一些听众。您可能必须将调用替换MainActivity.this.toString()为明确toString()要调用的内容。更一般地说toString(),它不是一种通常被显式调用的方法。当您让其他代码为您调用它时,它非常有用。例如String s = "foo " + something将隐式调用toString()(something假设它是一个对象而不是一个String)。

慕容708150

尝试以下操作:String text = "Player " + String.valueOf(player) + " wins";toString 方法是不必要的。String.valueOf(int number) 将获取您的整数值(获胜的玩家)并将其转换为可以显示在 Toast 中的字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java