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

初学Java,写了个猜拳的小程序,有错误不会改了,希望哪位高手指点一下,帮忙改一下,说具体点,谢谢!!//石头,剪刀,布游戏的程序publicclassCai{charm... 初学Java,写了个猜拳的小程序,有错误不会改了,希望哪位高手指点一下,帮忙改一下,说具体点,谢谢!!

//石头,剪刀,布游戏的程序
public class Cai
{
char m; //m为输入的石头,剪刀,布的一种
int n;
public static void main(String args[])
{

Cai cai=new Cai();
cai.pa(); //比较输入的项跟电脑随机的项并输出比较结果
cai.pb(); //电脑随机产生石头,剪刀,布中的一个
}
static char pa(char m)
{
if(m==cai.pb()) //电脑跟玩家出的一样为平局
{
System.out.println("平局,再来!");
}
if(m=="布") //玩家输入的为布,跟电脑随机的比较并输出结果
{
n=0;
String"布"=String.valueOf(n);
if("布"==(pb()-1))
System.out.println("我赢了!");
if("布"==(pb()-2))
System.out.println("我输了!");
}
if(m=="石头") //玩家输入为石头
{
n=1;
String"石头"=String.valueOf(n);
if("石头"==(pb()-1))
System.out.println("我赢了!");
if("石头"==(pb()+1))
System.out.println("我输了!");
}
if(m=="剪刀") //玩家输入为剪刀
{
n=2;
String"剪刀"=String.valueOf(n);
if("剪刀"==(pb()+2))
System.out.println("我赢了!");
if("剪刀"==(pb()+1))
System.out.println("我输了!");
}

}
static int pb() //电脑随机产生3个数,分别代表石头剪刀布,
{
int z;
double da=Math.random();
z=(int)da*2;
return z;
}
}
展开
 我来答
worldimagine
推荐于2016-11-15 · TA获得超过174个赞
知道答主
回答量:90
采纳率:0%
帮助的人:82.7万
展开全部
有不少错,我重新写了一个……

你这里,首先
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中的顺序相对应
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式