Java 我可以对switch语句使用随机数吗?
所以我试图创建一个石头/纸/剪刀的应用程序,但我遇到了一个问题。在下面的代码中,“Random r”选择一个数字1-3并将其分配给r/P/S。该部分工作,但我的switch语句中的评分或toast代码不工作。“case”旁边的整数应该是选项的值,对吗?如果有人能找到我的问题,我将不胜感激Java 我可以对switch语句使用随机数吗?,java,random,switch-statement,Java,Random,Switch Statement,所以我试图创建一个石头/纸/剪刀的应用程序,但我遇到了一个问题。在下面的代码中,“Random r”选择一个数字1-3并将其分配给r/P/S。该部分工作,但我的switch语句中的评分或toast代码不工作。“case”旁边的整数应该是选项的值,对吗?如果有人能找到我的问题,我将不胜感激 public void decide(){ int playerTotal = 0; int computerTotal = 0; TextView pTota
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。我看不出这段代码有任何问题,您能更具体地说明您遇到了什么问题吗?:“返回0(包括)和指定值(排除)之间的伪随机、均匀分布的整数值”。=>也就是说,你得到的值是0,1或2。。。而不是1、2或3!是的,Android Studio与此完全无关。