运行的时候,要求只能输入0,1,2,如果输入其他则提示重新输入。但是如果输入错误的再重新输入正确的时候,输赢判断会有错误,这是什么原因啊?请高手指导
import java.util.*;
public class F2 {
public static void main(String[] args) {
System.out.println("*************************");
System.out.println("*\t人机猜拳游戏\t*");
System.out.println("*************************");
Game game=new Game();
game.play();
game.showReasult();
}
}
class Person{
int score=0;
public int showQ1(){
System.out.println("请出:0-石头、1-剪刀、2-布");
Scanner sc=new Scanner(System.in);
int Q1=sc.nextInt();
if(Q1==0||Q1==1||Q1==2){
switch(Q1){
case 0:System.out.println("你出的是石头");break;
case 1:System.out.println("你出的是剪刀");break;
case 2:System.out.println("你出的是布");break;
}
}else{
System.out.println("输入有误,请重新输入!");
Person ps=new Person();
ps.showQ1();
}
return Q1;
}
}
class Computer{
int score=0;
public int showQ2(){
int Q2=new Random().nextInt(3);
switch(Q2){
case 0:System.out.println("电脑出的是石头");break;
case 1:System.out.println("电脑出的是剪刀");break;
case 2:System.out.println("电脑出的是布");break;
}
return Q2;
}
}
class Game{
int count=0;
int countQ=0;
Person ps=new Person();
Computer cp=new Computer();
public void play(){
System.out.println("是否开始游戏? (y/n)");
Scanner sc1=new Scanner(System.in);
String ans1=sc1.next();
if(ans1.equals("y")){
String ans2;
do{
int Q1=ps.showQ1();
int Q2=cp.showQ2();
if((Q1==0&&Q2==1)||(Q1==1&&Q2==2)||(Q1==2&&Q2==0)){
System.out.println("赢");
ps.score++;
}else if((Q1==0&&Q2==0)||(Q1==1&&Q2==1)||(Q1==2&&Q2==2)){
System.out.println("平");
countQ++;
}else if((Q1==0&&Q2==2)||(Q1==1&&Q2==0)||(Q1==2&&Q2==1)){
System.out.println("输");
cp.score++;
}
count++;
do{
System.out.println("是否继续? (y/n)");
Scanner sc2=new Scanner(System.in);
ans2=sc2.next();
}while(!ans2.equals("y")&&!ans2.equals("n"));
}while(ans2.equals("y"));
}else if(ans1.equals("n")){
//System.out.println("游戏结束");
}else{
System.out.println("输入有误请重新输入!");
Game game=new Game();
game.play();
}
System.out.println("游戏结束!");
}
public void showReasult(){
System.out.println("*************************");
System.out.println("*\t游戏结果为:\t*");
System.out.println("*\t对战次数:"+count+"次\t*");
System.out.println("*\t平局:"+countQ+"次\t\t*");
System.out.println("*\t你赢得:"+ps.score+"次\t\t*");
System.out.println("*\t电脑赢得"+cp.score+"次\t\t*");
System.out.println("*************************");
}
}