A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹思敏 中级黑马   /  2013-5-30 14:22  /  3151 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*问题1:童年的回忆是美好的;还记得小时候大家经常玩的石头、剪刀、布小游戏吗?
有两个人;分别是小明跟小红;;判断(A WINNER) & (B WINNER)
怎么用JAVA来表达??
*/
public class Winner
{
public static void main(String[] args)
{
     char A = "小明";
     
     if (A=="石头") & (B=="剪刀")
     
  System.out.println("A");
     
     else if (A=="剪刀") & (B=="布")
     
  System.out.println("A");
     
     else if (A=="布") & (B=="石头")
     
  System.out.println("A");
     
     else
     
  System.out.print("B");
     
}
}
编译错误;如下图1-3;求助如何用程序编译通过并生成.class文件。

6 个回复

倒序浏览
这是我写的一个猜拳小游戏,程序很简单。有需要改进的地方请指出,互相帮助...import java.util.Scanner;
/*
* 猜拳游戏
* 巩建
* 程序中已经输入了游戏规则,不能向人那样灵活。
* 了解规则,很容易就成功!

*/
public class game {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println("-------欢迎进入游戏世界-------");
  System.out.println();
  System.out.println("***************************");
  System.out.println("\t**猜拳开始**\t\t");
  System.out.println("***************************");
  System.out.println();
  System.out.println("出拳规则:1.石头2.剪刀3.布");
  System.out.println("对战人物:1.修罗2.地狱犬3.啸月天狼4.神秘人");
  System.out.println("\t三局两胜制");
  System.out.println();
  System.out.println("***************************");
  Scanner a =new Scanner(System.in);
  String answer="y";
  do{
     System.out.print("请输入您想到对战的人物:\t");
     int renwu =a.nextInt();
     if(renwu==1){
      xiuluo q=new xiuluo();
      q.shi();
     }
     else if(renwu==2){
      diyuquan w=new diyuquan();
      w.jian();
     }
     else{
      xiaoyue e=new xiaoyue();
      e.xiao();
     }
     System.out.println("是否继续?y/n");
     answer=a.next();
     }while(answer.equals("y"));
  if(answer!="y"){
   System.out.println("再见,希望您下次来玩!");
  }
}
}

import java.util.Scanner;

public class daomei {
public void dao(){
  System.out.println("您选择的对战人物是神秘人!");//必赢
  Scanner a=new Scanner(System.in);
  for(int i=0;i<3;i++){
   System.out.println("请输入您想要出什么!");
   int b=a.nextInt();
   if(b==1){
    System.out.println(" 恭喜您!您的石头碰到了可怜的小剪刀!");
   }
   else if(b==2){
    System.out.println("恭喜您,您碰见了布!");
   }
   else{
    System.out.println("恭喜您,您的布包住了石头!");
   }
  }
  System.out.println();
  System.out.println("根据游戏规则,您挑战成功!");
}
}
import java.util.Scanner;

public class diyuquan {
public void jian(){
  System.out.println("您选择的对战人物是地狱犬!");//一胜一负一平
  Scanner a=new Scanner(System.in);
  for(int i=0;i<3;i++){
   System.out.println("请输入您想要出什么!");
   int b=a.nextInt();
   if(i==0){
    System.out.println("恭喜您!您赢了。");
   }
   else if(i==1){
    System.out.println("哎呦、哎呦,冤家路窄。平了....");
   }
   else{
    System.out.println("对不起,您输了!");
   }
  }
  System.out.println();
  System.out.println("根据游戏规则,您一胜一负一平,挑战失败!");
  
}
}
import java.util.Scanner;

public class xiaoyue {
public void xiao(){
  System.out.println("您选择的对战人物是啸月天狼!");//随机
  Scanner a=new Scanner(System.in);
  int k=0;
  for(int i=0;i<3;i++){
   System.out.println("请输入您想要出什么!");
   int b=a.nextInt();
   if(b==1){//int  number = (int)(Math.random()*100)产生100以内的随机数
                int s=(int)(Math.random()*100);
                if(s>50){
                 System.out.println("恭喜您!您的石头碰到了可怜的小剪刀!");
                 k++;
                }
                else
     System.out.println("对不起,您输了,石头是可以被布包容的哦!");
   }
   else if(b==2){
    int s=(int)(Math.random()*100);
    if(s>80){
     System.out.println("恭喜您,您碰见了布!");
     k++;
    }
    else
     System.out.println("对不起,您输了,剪刀碰到石头是会损坏的!");
   }
   else{
    int s=(int)(Math.random()*100);
    if(s>90){
     System.out.println("恭喜您,您的布包住了石头!");
     k++;
    }
    else
     System.out.println("对不起,您输了,您的布再大,也会被减坏的!");
   }
  }
  System.out.println();
  if(k>1){
   System.out.println("根据游戏规则,您挑战成功!");
  }
  else
   System.out.println("根据游戏规则,您挑战失败!");
  
}
}
import java.util.Scanner;

public class xiuluo {
public void shi(){
  System.out.println("您选择的对战人物是修罗!");//必输
  Scanner a=new Scanner(System.in);
  for(int i=0;i<3;i++){
   System.out.println("请输入您想要出什么!");
   int b=a.nextInt();
   if(b==1){
    System.out.println("对不起,您输了,石头是可以被布包容的哦!");
   }
   else if(b==2){
    System.out.println("对不起,您输了,剪刀碰到石头是会损坏的!");
   }
   else{
    System.out.println("对不起,您输了,您的布再大,也会被减坏的!");
   }
  }
  System.out.println();
  System.out.println("根据游戏规则,您挑战失败!");
}
}






回复 使用道具 举报
本帖最后由 王盟盟 于 2013-5-30 16:07 编辑

1、对字符串判断是否相等应该用equals()
2、与运算符应该是&&,而不是&
3、你应该把人物包装成一个javabean,有一个属性表示出的拳。
4、测试函数里可以有一个线程来进行游戏,并有一个变量来判断输赢
做了一个剪刀例子,你参考下吧,有不足的也可以给我提出来
  1. package CaiQuan;

  2. import java.util.Random;

  3. public class CaiQuan {

  4. /**
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. new Thread(new Test()).start();
  10. }
  11. }
  12. class Test implements Runnable
  13. {
  14. String name[]={"布","剪刀","石头"};
  15. Person ming,hong;
  16. int number,pingJu;//number表示共进行了多少局,pingJu表示平局多少次
  17. public Test()
  18. {
  19. ming=new Person("小明");
  20. hong=new Person("小红");
  21. }

  22. public void run() {
  23. while(ming.getWinNum()<5&&hong.getWinNum()<5)
  24. {
  25. //设置小明出的拳
  26. ming.setStatu(name[new Random().nextInt(3)]);
  27. //设置小红出的拳
  28. hong.setStatu(name[new Random().nextInt(3)]);
  29. if((ming.getStatu().equals("布")&&hong.getStatu().equals("石头"))||
  30. (ming.getStatu().equals("石头")&&hong.getStatu().equals("剪刀"))||
  31. (ming.getStatu().equals("剪刀")&&hong.getStatu().equals("布")))
  32. {
  33. ming.setWinNum(ming.getWinNum()+1);
  34. System.out.println("本次小明赢了==="+"小明出的是:"+ming.getStatu()+"===小红出的是:"+hong.getStatu());
  35. number++;
  36. }
  37. if((hong.getStatu().equals("布")&&ming.getStatu().equals("石头"))||
  38. (hong.getStatu().equals("石头")&&ming.getStatu().equals("剪刀"))||
  39. (hong.getStatu().equals("剪刀")&&ming.getStatu().equals("布")))
  40. {
  41. hong.setWinNum(hong.getWinNum()+1);
  42. System.out.println("本次小红赢了==="+"小红出的是:"+hong.getStatu()+"===小明出的是:"+ming.getStatu());
  43. number++;
  44. }
  45. if(ming.getStatu().equals(hong.getStatu()))
  46. {
  47. System.out.println("本次平手;他们出的都是"+ming.getStatu() );
  48. pingJu++;
  49. number++;
  50. }
  51. }
  52. if(ming.getWinNum()==5)
  53. {
  54. System.out.println("本局小明赢了");
  55. }
  56. if(hong.getWinNum()==5)
  57. {
  58. System.out.println("本局小红赢了");
  59. }
  60. System.out.println("本局一共猜了"+number+"局,平"+pingJu+"局");
  61. System.out.println("小明赢了"+ming.getWinNum()+"局");
  62. System.out.println("小红赢了"+hong.getWinNum()+"局");
  63. }
  64. }
  65. class Person {
  66. private String name;
  67. private String statu;
  68. private int winNum;
  69. public int getWinNum() {
  70. return winNum;
  71. }
  72. public void setWinNum(int winNum) {
  73. this.winNum = winNum;
  74. }
  75. public String getName() {
  76. return name;
  77. }
  78. public void setName(String name) {
  79. this.name = name;
  80. }
  81. public String getStatu() {
  82. return statu;
  83. }
  84. public void setStatu(String statu) {
  85. this.statu = statu;
  86. }
  87. public Person(String name) {
  88. this.name = name;
  89. }
  90. public Person() {
  91. }
  92. }
复制代码
下面是运行结果:
  1. 本次小明赢了===小明出的是:剪刀===小红出的是:布
  2. 本次小明赢了===小明出的是:剪刀===小红出的是:布
  3. 本次小明赢了===小明出的是:石头===小红出的是:剪刀
  4. 本次小红赢了===小红出的是:石头===小明出的是:剪刀
  5. 本次小红赢了===小红出的是:剪刀===小明出的是:布
  6. 本次平手;他们出的都是布
  7. 本次平手;他们出的都是石头
  8. 本次小红赢了===小红出的是:布===小明出的是:石头
  9. 本次平手;他们出的都是布
  10. 本次小红赢了===小红出的是:剪刀===小明出的是:布
  11. 本次小红赢了===小红出的是:石头===小明出的是:剪刀
  12. 本局小红赢了
  13. 本局一共猜了11局,平3局
  14. 小明赢了3局
  15. 小红赢了5局
复制代码
回复 使用道具 举报
char A = "小明";//这里明显出错。不能讲String类型的转换成char类型的

if(A == "石头")&(B =="剪刀")  优先级的问题需要把条件整个都括起来


回复 使用道具 举报
本帖最后由 First 于 2013-5-30 16:48 编辑

楼主:
首先
char A =  这一行就没通过编译啊, 要改为String A = 。 不过最后是定义单独的类,毕竟是2 个 玩家
之后,玩这个游戏是不是要有2个 Player 呢? 不然 要怎么比呢? 是不是啊, 因此,你还需要定义2个player来比较。

最后呢, 你的比较方法 比较的应该是 2个player的动作,不是2个player ,所以 请不要写成 A == , 之类的。

尽管这么说,还是没有很好的表达我的观点。 所以呢,就写个例子,楼主尽请观看
  1. package test;

  2. public class Demo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub

  8.                 Player p1 = new Player("playerA", Pos.ROCK);
  9.                 Player p2 = new Player("playerB", Pos.SCISSOR);
  10.                 result(p1,p2);
  11.         }
  12.         
  13.         public static void result(Player p1,Player p2){
  14.                 Pos pos1 = p1.getP();
  15.                 Pos pos2 = p2.getP();
  16.                
  17.                 if(pos1==pos2)
  18.                         System.out.println("deuce");
  19.                 else if(pos1.next() == pos2)
  20.                         System.out.println("winner: " + p1.getName());
  21.                 else if(pos2.next() == pos1)
  22.                         System.out.println("winner: " + p2.getName());
  23.         }

  24. }

  25. class Player{
  26.         String name;
  27.         Pos p = Pos.ROCK;
  28.         
  29.         public String getName() {
  30.                 return name;
  31.         }

  32.         public void setName(String name) {
  33.                 this.name = name;
  34.         }

  35.         public Pos getP() {
  36.                 return p;
  37.         }


  38.         public void setP(Pos p) {
  39.                 this.p = p;
  40.         }

  41.         Player(String name, Pos p){
  42.                 this.name = name;
  43.                 this.p = p;
  44.         }
  45. }

  46. enum Pos{
  47.         ROCK {
  48.                 @Override
  49.                 public Pos next() {
  50.                         // TODO Auto-generated method stub
  51.                         return SCISSOR;
  52.                 }
  53.         },
  54.         
  55.         PAPER {
  56.                 @Override
  57.                 public Pos next() {
  58.                         // TODO Auto-generated method stub
  59.                         return ROCK;
  60.                 }
  61.         },        
  62.         
  63.         SCISSOR {
  64.                 @Override
  65.                 public Pos next() {
  66.                         // TODO Auto-generated method stub
  67.                         return PAPER;
  68.                 }
  69.         };
  70.         
  71.         public abstract Pos next();
  72. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

回复 使用道具 举报
char A = "小明";这里应该定义string类型,然后if条件是在()里面的,其他改过了再编译下试试,话说上面高手们贴的代码好牛,哈哈,
回复 使用道具 举报
心头有种蛋蛋的忧桑。。。
好久没来回帖看帖了。。。
希希版主都生气了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马