package com.Tet;
import java.util.Random;
import java.io.BufferedReader;
import java.io.InputStreamReader;public class CaiQuan { /**
 * @param args
 */
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader str=new BufferedReader(isr);
//随机数
Random rnd = new Random();
boolean a=true;
int b=1;

while(a==true)
{
int p=rnd.nextInt(2);
System.out.println("猜拳游戏\t0石头\t1剪刀\t2布\t3退出");
System.out.println("请选择你的出拳方式:");
int p1=str.read();
switch(p1)
{
case '0':if(p==2)
{
System.out.println("电脑赢了");
}else if(p==1)
{
System.out.println("玩家赢了");
}
else{System.out.println("平局");}break;

case '1':if(p==0)
{
System.out.println("电脑赢了");
}else if(p==2)
{
System.out.println("玩家赢了");
}
else{System.out.println("平局");}break;

case '2':if(p==1)
{
System.out.println("电脑赢了");
}else if(p==0)
{
System.out.println("玩家赢了");
}
else{System.out.println("平局");}break;

case '3':a=false;break;
default:System.out.println("输入有误请重新输入");break;
}

}
}
}
猜拳程序,哪里写错了!!

解决方案 »

  1.   

    int p1=str.read(); -> char p1 = (char)str.read();
      

  2.   

    nextInt(2) 是指0到2的数,不包括3
      

  3.   

    楼主的switch语句写错了。。变量p1是整数,里面的case语句应该写成 : case 0:{....},去掉单引号。
    将楼主的程序改了一下,如下:import java.util.Random;
    import java.util.Scanner;public class CaiQuan {
    public static void main(String[] args) throws Exception {
    // TODO Auto-generated method stub
    Scanner str = new Scanner(System.in);
    // 随机数
    Random rnd = new Random();
    boolean a = true; while (a == true) {
    int p = rnd.nextInt(2);
    System.out.println("猜拳游戏\t0石头\t1剪刀\t2布\t3退出");
    System.out.println("请选择你的出拳方式:");
    int p1 = str.nextInt();
    switch (p1) {
    case 0:
    if (p == 2) {
    System.out.println("电脑赢了");
    } else if (p == 1) {
    System.out.println("玩家赢了");
    } else {
    System.out.println("平局");
    }
    break; case 1:
    if (p == 0) {
    System.out.println("电脑赢了");
    } else if (p == 2) {
    System.out.println("玩家赢了");
    } else {
    System.out.println("平局");
    }
    break; case 2:
    if (p == 1) {
    System.out.println("电脑赢了");
    } else if (p == 0) {
    System.out.println("玩家赢了");
    } else {
    System.out.println("平局");
    }
    break; case 3:
    a = false;
    break;
    default:
    System.out.println("输入有误请重新输入");
    break;
    } }
    }
    }