Java小程序问题,请高手帮忙改一下

2024-12-03 04:19:55
推荐回答(1个)
回答1:

有不少错,我重新写了一个……

你这里,首先
String"布"=String.valueOf(n);
这句话很诡异,“布”是字符串常量,就不能放在变量的位置,可以写成String bu = String.valueOf(n);其余类似。

然后,你定义了m为char类型的,应该是不能和String类型的相比较的。在双引号里的就是String的,要单引号才是字符型的。

然后,定义了pa(int) ,在调用的时候就不能无参调用,但是你main()函数里写的pa调用就是无参调用,这样会找不到函数。

再然后,既然pa(int),这个主要的函数都跑完了,不知道你再调用pb()是想做什么。

因为你定义了pa是static的,所以实际上也就不需要再创建Cai的对象出来了。

此外,random方法是定义了0-1的随机数,你乘以2取整的话,是不是只能取到0和1呢?(嗯,即使能取到2,这个取到2的几率也会比较小吧?呃,这个我不清楚,纯粹在怀疑)

然后,下面写了一个,结果由用户的输入决定,界面稍微友好了一点。但是还有很多问题,比如不能处理错误,而且游戏不能重复玩,这些都有点麻烦,所以就没写了,基本的你可以参考下。

有几点:
像这样的情况,用枚举会比较好,这里把石头、剪子、布都放到了枚举类型里;
其次,使用java.util包里的Random类替代Math里的random方法,也比较好一点

import java.util.*;

public class Cai {

enum Res{SHITOU, JIANZI, BU};

Res res;

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Cai cai = new Cai();

System.out.println("请输入你的选择:");
System.out.println("0表示石头,1表示剪子,2表示布");
char yourResultOfChar =(char) System.in.read();

int yourResultOfInt = yourResultOfChar - '0';
int computerResult = pb();

cai.getYourResult(yourResultOfInt);
switch (computerResult)
{
case 0:
System.out.println("电脑选择石头");
break;
case 1:
System.out.println("电脑选择剪子");
break;
case 2:
System.out.println("电脑选择布");
break;

}
cai.pa(computerResult);

}

public void getYourResult(int count)
{
Res[] result = Res.values();
res = result[count];
}

void pa(int computer)
{
Res[] result = Res.values();
if(this.res == Res.SHITOU)
{
System.out.println("我选择石头");
switch(result[computer])
{
case SHITOU:
System.out.println("平局,再来!");
break;
case JIANZI:
System.out.println("我赢了!");
break;
case BU:
System.out.println("我输了!");
break;
}

} else if(this.res == Res.JIANZI)
{
System.out.println("我选择剪子");
switch(result[computer])
{
case JIANZI:
System.out.println("平局,再来!");
break;
case BU:
System.out.println("我赢了!");
break;
case SHITOU:
System.out.println("我输了!");
break;
}
} else if(this.res == Res.BU)
{
System.out.println("我选择布");
switch(result[computer])
{
case BU:
System.out.println("平局,再来!");
break;
case SHITOU:
System.out.println("我赢了!");
break;
case JIANZI:
System.out.println("我输了!");
break;
}
}

}

static int pb()
{
Random ran = new Random();
int res = ran.nextInt(3);
return res;
//输出0-2的整数,0表示石头,1表示剪子,2表示布,和enum Res中的顺序相对应
}
}