[code=Java]/*
 * 游戏类
 */
package caiquan;
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
Computer one = new Computer();//电脑类对象
Player two = new Player();//玩家类对象
String answer = "";//回答
public void youxi(){
System.out.println("-----------------欢 迎 进 入 游 戏 世 界-----------------\n\n");
System.out.println("\t\t ****************");
System.out.println("\t\t **  猜拳,开始  **");
System.out.println("\t\t ****************\n\n");
do{
System.out.println("出拳规则:1.剪刀 2.石头 3.布");
System.out.print("请选择角色(1.刘备 2.孙权 3.曹操):");
int part = input.nextInt();
System.out.print("要开始吗?(y/n)");
answer = input.next();
}while(!answer.equals("y"));
}
public void start(){
do{
/*
 * 是不是这里错了?
 */
System.out.print("请出拳:1.剪刀 2.石头 3.布 (输入相应数字):");
two.human();//玩家的类
one.com();//电脑的类
if((one.suiji()==1&&two.shuru()==2)||(one.suiji()==2&&two.shuru()==3)||(one.suiji()==3&&two.shuru()==1)){
System.out.println("你胜出");//判断输赢
}else if(one.suiji()==two.shuru()){
System.out.println("平局");
}else{
System.out.println("电脑胜出");
}
System.out.println("是否开始下一轮(y/n):");
answer = input.next();
}while(answer.equals("y"));
}
public void bijiao(){
//还没写的方法是用来控制输出的,但是在上面就卡主了
}
}/*
 * 电脑类
 */
package caiquan;public class Computer {
public int suiji(){
 int random = (int)(Math.random()*3)+1;
 return random;
}
public void com(){
switch(suiji()){
case 1:
System.out.println("电脑出拳:剪刀");
break;
case 2:
System.out.println("电脑出拳:石头");
break;
case 3:
System.out.println("电脑出拳:布");
break;
}
}
}
/*
 * 玩家类
 */
package caiquan;
import java.util.*;
public class Player {
Scanner input = new Scanner(System.in);
public int shuru(){
int num = input.nextInt();
return num;
}
public void human(){
switch(shuru()){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
}
}
/*
 * 运行的主类
 */
package caiquan;
public class GameTest { /**
 * @param SimpleM
 */
public static void main(String[] args) {
Game me = new Game();
me.youxi();
me.start();
}
}
code]朋友们啊,我错在哪里啊?为什么错呢?

解决方案 »

  1.   

    你看看two.human()和if((one.suiji()==1&&two.shuru()==2)中红色部分的方法;
    这两个方法调用重复了。导致在进行比较的时候你还得输入一个数值。
      

  2.   

    import java.util.*; 
    public class Player 

    Scanner input = new Scanner(System.in);
     
    public int shuru()

    num = input.nextInt(); 
    return num; 

    public int getNum()
    {
    return num;
    }
    public void human()

    switch(shuru())

    case 1: 
    System.out.println("你出拳:剪刀"); 
    break; 
    case 2: 
    System.out.println("你出拳:石头"); 
    break; 
    case 3: 
    System.out.println("你出拳:布"); 
    break; 

    }
    private int num; 
    }   
      

  3.   

    if((one.suiji()==1&&two.getNum()==2)||(one.suiji()==2&&two.getNum()==3)||
    (one.suiji()==3&&two.getNum()==1))Game类中的比较用if((one.suiji()==1&&two.getNum()==2)||(one.suiji()==2&&two.getNum()==3)||
    (one.suiji()==3&&two.getNum()==1))
    这个就可以了
      

  4.   

    写了个简单的参考一下:import java.util.Random;public class Test {    public static void main(String[] args) {
            GuessGamer my = new GuessGamer("my");
            GuessGamer computer = new GuessGamer("computer");
            my.setGuessType(0);
            computer.randomGuessType();
            my.printCompareResult(computer);
        }
    }class GuessGamer {    private String name;
        
        private GuessType guessType;
        private String[] compareResult;    public GuessGamer(String name) {
            this.name = name;
            compareResult = new String[]{ name + " 输了", "平局", name + " 赢了" };
        }
        
        public void randomGuessType() {
            guessType = GuessType.randomGuessType();
        }
        
        public void setGuessType(int value) {
            guessType = GuessType.chooseGuessType(value);
        }
        
        public int compare(GuessGamer guessGamer) {
            return guessType.compare(guessGamer.guessType);
        }
        
        public String toString() {
            return name + " 出的是: " + guessType.getName();
        }
        
        public void printCompareResult(GuessGamer guessGamer) {
            System.out.println(toString());
            System.out.println(guessGamer.toString());
            int result = compare(guessGamer);
            System.out.println(compareResult[result + 1]);
        }
    }class GuessType {    private int value;
        private String name;        private final static GuessType[] guessTypes = new GuessType[3];    public final static GuessType ROCK          = new GuessType("石头", 0);
        public final static GuessType SCISSORS      = new GuessType("剪刀", 1);
        public final static GuessType PAPER         = new GuessType("布", 2);    private static Random ran = new Random();    private GuessType(String name, int value) {
            this.value = value;
            this.name = name;
            guessTypes[value] = this;
        }    public static GuessType randomGuessType() {
            return guessTypes[ran.nextInt(3)];
        }
        
        public static GuessType chooseGuessType(int value) {
            if(value < 0) {
                return randomGuessType();
            }
            return guessTypes[value % 3];
        }    public int compare(GuessType other) {
            if(value == other.value) {
                return 0;
            }
            return (value + 1) % 3 == other.value ? 1 : -1;
        }    public String getName() {
            return name;
        }    public int getValue() {
            return value;
        }
    }
      

  5.   

    虽然结贴了,但我还是要把刚才没贴出来的贴一下吧。给不给分不重要,主要是想相互交流一下。
    Computer类 也增加了一个getValue()方法;
    public class Computer
     { 
    public int suiji()

    value = (int)(Math.random()*3)+1; 
    return value; 

    public int getValue()
    {
    return value;
    }
    public void com()

    switch(suiji())

    case 1: 
    System.out.println("电脑出拳:剪刀"); 
    break; 
    case 2: 
    System.out.println("电脑出拳:石头"); 
    break; 
    case 3: 
    System.out.println("电脑出拳:布"); 
    break; 
      } 

    private int value;

     
     而比较变成了if((one.getValue()==1&&two.getNum()==2)||(one.getValue()==2&&two.getNum()==3)||
    (one.getValue()==3&&two.getNum()==1))

    System.out.println("你胜出");//判断输赢 
    }
    else if(one.getValue()==two.getNum())

    System.out.println("平局"); 
    }
    else

    System.out.println("电脑胜出"); 

    不好意思,我是个初学者,考虑事情不周到,导致这么多次发贴,打扰了。
    本来早就做好了,但csdn 不让频繁的发贴,导致这么久才贴出来。这下完全可以了,我保证。呵呵