![](/img/trans.png)
[英]Can I use a String in a switch statement and use .contains() with Java?
[英]Can I use randomized numbers for a switch statement?
所以我正在尝试创建一个石头/纸/剪刀应用程序,但我遇到了一个问题。 在下面的代码中,“随机 r”选择一个数字 1-3 并将其分配给 R/P/S。 该部分有效,但我的 switch 语句中的评分或 toast 代码无效。 “case”旁边的整数应该是选择正确的值吗? 如果有人能找到我的问题,我将不胜感激。
public void decide(){
int playerTotal = 0;
int computerTotal = 0;
TextView pTotal = (TextView)findViewById(R.id.playerTotal);
TextView cTotal = (TextView)findViewById(R.id.compTotal);
pTotal.setText(Integer.toString(playerTotal));
cTotal.setText(Integer.toString(computerTotal));
int cpu = r.nextInt(3); //Randomizer will choose 1-3
if(cpu == 1) {
cpuChoice = "rock";
imgCpu.setImageResource(R.drawable.rock);
}
else if(cpu == 2){
cpuChoice = "paper";
imgCpu.setImageResource(R.drawable.paper);
}
else if(cpu == 3){
cpuChoice = "scissors";
imgCpu.setImageResource(R.drawable.scissors);
}
String winOrLose = "";
switch (cpu){
case 1:
if(myChoice == "rock") {
winOrLose = "Stalemate!";
}
if(myChoice == "paper") {
winOrLose ="paper beats rock! You won this round!";
playerTotal++;
}
if(myChoice == "scissors") {
winOrLose = "rock beats paper! You lost this round!";
computerTotal++;
}
Toast.makeText(MainActivity.this,winOrLose, Toast.LENGTH_SHORT);
break;
case 2:
if(myChoice == "rock") {
winOrLose = "paper beats rock! You lost this round!";
computerTotal++;
}
if(myChoice == "paper") {
winOrLose = "Stalemate!";
}
if(myChoice == "scissors") {
winOrLose = "scissors beats paper! You won this round!";
playerTotal++;
}
Toast.makeText(MainActivity.this,winOrLose, Toast.LENGTH_SHORT);
break;
case 3:
if(myChoice == "rock") {
winOrLose = "rock beats scissors! You won this round!";
playerTotal++;
}
if(myChoice == "paper") {
winOrLose = "scissors beats paper! You lost this round!";
computerTotal++;
}
if(myChoice == "scissors") {
winOrLose = "Stalemate!";
}
Toast.makeText(MainActivity.this,winOrLose, Toast.LENGTH_SHORT);
break;
}
}
正如@Seelenvirtuose 所说,您 nextInt() 将生成 0-2 但不是 1-3 之间的值(假设您发送 3 作为 nextInt() 方法的参数)。
因此,要生成 1-3 之间的值,您可以尝试以下代码。
int minimum = 1;
int maximum = 4;
Random random = new Random();
int randomValue = random.nextInt( maximum - minimum ) + minimum;
要了解有关在指定范围之间生成随机数的更多信息,请访问此处
我想到了! 评分不起作用,因为每次调用该方法时,评分都会重置为 0,因此我将其交换到方法的末尾并擦除了零。 对于吐司,我必须在最后添加 .show() ,如下所示:
Toast.makeText(MainActivity.this,winOrLose, Toast.LENGTH_SHORT).show();
谢谢大家的建议! Random 为我工作 1-3,但我将其更改为 0-2,以确保技术上是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.