有没java大神过来指导一下!谢谢!!!!!

小弟,初学java,写了下面一段猜拳游戏的代码,为什么平局的时候输出不正常,求指导!!

import java.util.Scanner;
public class guessGame{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
String answer;
do{
System.out.println("--------猜拳游戏--------");
System.out.println("请出拳(1.石头 2.剪刀 3.布)");
int person=input.nextInt();
int computer=(int)(Math.random()*3)+1;
String marks="拳头";
String marks1="拳头";
switch(person){
case 1:
marks="石头";
break;
case 2:
marks="剪刀";
break;
case 3:
marks="布";
break;
}
switch(computer){
case 1:
marks1="石头";
break;
case 2:
marks1="剪刀";
break;
case 3:
marks1="布";
break;
}
if(person==computer){
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t平局");
}
if(person==1&&computer==2||person==2&&computer==3||person==3&&computer==1){
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t恭喜你,你赢了");
}
else{
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t不好意思,你输了");
}
System.out.println("是否继续(y/n)?");
answer=input.next();
}while(answer.equals("y"));
}
}

是这样的,看你判断那一段,你的else 是针对的是它上面的第二个if,也就是说,除去你第二个if条件的所有情况都是else,这个else 只针对于第二个if,而不是针对于两个if。通俗的讲你的逻辑是这样的:若平局则输出平局,若你赢了则输出你赢了,若你没赢则输出你输了。而逻辑上这是错误的,因为你没赢包括了你平局的可能。不知道这么说您懂了么,没懂的话可以追问我。追问

你的意思我懂了,那3个条件或者以上判断的话 最后怎么用else?

追答

你可以这样 if(person==computer){
}else if(y赢){
}else{
} 这么去写。这样保证了你这三条条件是连续的逐一排除的

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-13
if(person==computer){
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t平局");
}else // -----------------这里需要加个else
if(person==1&&computer==2||person==2&&computer==3||person==3&&computer==1){
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t恭喜你,你赢了");
}
else{
System.out.println("你出的是:"+marks+"\t电脑出的是:"+marks1+"\t不好意思,你输了");
}

看看上面的例子,在平局的判断后加个“else”就可以了。

追问

懂了 是要用if。。。elseif。。。else结构是吧

第2个回答  2014-04-13
你输出person和computer两个变量,看看它们的值,就清楚了
第3个回答  2014-04-13
你最好是按面向对象的方式写

java学习路线是什么?求大神指导!
首先总结一下做java最后大致是两个方向:web企业级开发(JavaWeb J2EE)和手机android开发。这两个方向的先决条件是J2SE,J2SE并不是那么简单,只有当你逐渐学的深入了你才体会到java的精髓。1.HTML+CSS+DIV,前端会用到,作为研发人员至少应该会简单写些页面出来,这是许多编程语言都需要了解的基础。2....

<java>请各路大神帮忙分析一下我的理解对不对
1.1:实例变量:就是我们正常定义的变量,比如int a; a就是实例变量 1.2:静态变量:静态变量定义前要加上Static 比如static int a;这个a就是静态变量,当在变量定义前加上static的时候就代表着该变量在使用的时候有一处改变则各个用到这个变量的地方,该变量都发生改变,就是所谓的一处改变处处...

JAVA编程问题求大神帮忙看看解答谢谢!
你的问题:1 、定义的数组类型有问题 讲解:字符数组用该用char 或者String 你这个由于是中文字符串,所以用String char 和String 定义是需要引号引起来,2 、java中,结束一段表达式的时候要用英文的分号结束,你定义数组的时候没有结束符 ...

JAVA简单问题,高手进下帮帮忙,谢谢!
低 住 佐 佑 佒 体 占 何 佖 佗 佘 余 佚 佛 作 佝 佞 佟 你 佡 这是运行结果,解释:i是从20302开始循环,然后将其强转成char类型进行输出,由于你直接把int类型赋值给char类型,就相当于你把ASCII码直接赋值给了char类型,所以打印出来的是ASCII码所对应的汉字 ...

JAVA问题,求高手!!!
SubClass(int n) { super(n);System.out.println("SubClass(" + n + ")");this.n = n;} 子类继承父类,父类的无参构造系统可以默认调用,就是子类无参构造中可以不用写父类的无参构造super()。但有参构造必须要显式调用,即子类有参构造第一行必须调用父类的有参构造。修改后结果:Super...

有没java大神过来指导一下!谢谢!!!
除去你第二个if条件的所有情况都是else,这个else 只针对于第二个if,而不是针对于两个if。通俗的讲你的逻辑是这样的:若平局则输出平局,若你赢了则输出你赢了,若你没赢则输出你输了。而逻辑上这是错误的,因为你没赢包括了你平局的可能。不知道这么说您懂了么,没懂的话可以追问我。

这里有几道java题,求大神帮忙解答下好吗?非常感谢!
3、包导入使用这个不需要解释,很简单,就是你用到哪个类,就需要将那个导入的类所在的包路径导入 4、接口关键字:implements 5、抛出异常可以两种方法:一种是try ... catch... 抛异常,一种是直接在类名后面throws抛异常 6、都能够表示当前,区别在于super可以调用父类 7、接口和抽象类的区别在于...

求java大神。。。我们的专周,给出大概的思路,代码什么的给我参考一...
代码肯定没有啦,明显是命题类作业嘛,我过了下需求,也不是很难的东西,如果做的好点可以用个工作流的审批一下,这类系统叫资产管理类,也可以成为库管系统,功能点也不是很多,目测大约37个功能点就搞定啦。无非是30个增删改查,2个登录登出,5个以上的工作流审批,就结束战斗啦。用户角色大约3类...

求教Java大神!!
首先安装JDK再在 我的电脑->属性->高级系统设置->环境变量中设置变量 path变量如果你没有就新建一个也可以在系统变量中的path路径中添加,就不用去用户变量去添加了区别在于用户变量添加的电脑换一个用户登录之前的用户设置的变量是不存在的,而系统变量是不变的。 在dos中使用 java -version ...

学Java学的烦,一大堆看不懂的专业术语,英语还不好!有大神能跟我说说,Ja...
首先去找一个Java的基础教程学一下,或者你也可以去找相应的视频。学习Java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是...

相似回答
大家正在搜