为了账号安全,请及时绑定邮箱和手机立即绑定

使用 toString()

使用 toString()

青春有我 2022-06-30 19:11:45
我正在开发一个简单的 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;@NonNullpublic 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 播放器没有正确使用?
查看完整描述

4 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

player是一个int,所以在这种情况下你不需要一个toString方法:

String text = "Player " + player + " wins!";

另外,删除该public String toString()方法,因为您可能对默认Activity.toString()方法有问题....


查看完整回答
反对 回复 2022-06-30
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

你使用它的toString()方式,你的活动类的方法被调用,
这就是你看到的原因com.ellis.newdice.MainActivity$1
你不需要toString()达到你想要的。
用这个:

String text = "Player " + winner + " wins!";

winner使用您在代码中为获胜玩家使用的变量(整数?)进行更改。


查看完整回答
反对 回复 2022-06-30
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

看起来你调用它的对象实际上不是你的MainActivity,而是它内部的一些匿名内部类,可能是一些听众。您可能必须将调用替换MainActivity.this.toString()为明确toString()要调用的内容。

更一般地说toString(),它不是一种通常被显式调用的方法。当您让其他代码为您调用它时,它非常有用。例如String s = "foo " + something将隐式调用toString()something假设它是一个对象而不是一个String)。


查看完整回答
反对 回复 2022-06-30
?
慕容708150

TA贡献1831条经验 获得超4个赞

尝试以下操作:

String text = "Player " + String.valueOf(player) + " wins";

toString 方法是不必要的。String.valueOf(int number) 将获取您的整数值(获胜的玩家)并将其转换为可以显示在 Toast 中的字符串。


查看完整回答
反对 回复 2022-06-30
  • 4 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号