qq_31132463
qq_31132463
2015-10-30 14:52
采纳率: 100%
浏览 1.6k
已采纳

java初学者 为什么两个格式相同的代码编译出来结果不同求大神指导

import java.util.*;
public class a {
public static void main(String[] args){
Scanner in=new Scanner(System .in);
System.out.println("请出拳");
System.out.println("请选择: 1剪刀 2石头 3布");
int a=in.nextInt();
int b=(int)(Math.random()*3)+1;
System.out.println(b);

if(a==1){
System.out.println("你出的是 剪刀");
if(b==0){
System.out.println("电脑出的是 剪刀 平局");
}else if(b==1){
System.out.println("电脑出的是 石头 你输了");
}else if(b==2){
System.out.println("电脑出的是 布 你赢了");
}
}
if(a==2){
System.out.println("你出的是 石头");
if(b==0){
System.out.println("电脑出的是 剪刀 你赢了");
}else if(b==1){
System.out.println("电脑出的是 石头 平局");
}else if(b==2){
System.out.println("电脑出的是 布 你输了");
}
}
if(a==3){
System.out.println("你出的是 布");
if(b==0){
System.out.println("电脑出的是 剪刀 你输了");
}else if(b==1){
System.out.println("电脑出的是 石头 你赢了");
}else if(b==2){
System.out.println("电脑出的是 布 平局");
}
}

}
}

当a==3 时得不出石头剪刀布的效果图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • wwwsssaaaddd
    诸相非相 2015-10-30 15:11
    已采纳
     int b=(int)(Math.random()*3)+1;
    

    改成

     int b=(int)(Math.random()*3);
    

    因为(int)(Math.random()*3) +1;的取值范围是1、2和3,当随机数最终得到3时,没有对应的处理逻辑,于是没有输入
    建议在每个判断b的if-else语句增加

     else{
      System.out.println("电脑出的无法识别!!  " + b);
    }
    
    点赞 评论
  • hanyueyingxin
    Sherwin_fang 2015-10-30 15:02

    随机数乘以三干嘛 这个地方有问题吧

    点赞 评论
  • tongyi55555
    JonsonJiao 2015-10-31 02:02

    random的范围是0-1,不包含1的,常见问题。

    点赞 评论

相关推荐