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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁永志 中级黑马   /  2013-5-18 18:50  /  1134 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 丁永志 于 2013-5-19 21:50 编辑

我们学校刚开这个课程,这是一个老师给我们做一个猜数的小程序
求解决程序在猜错4次后,能够正确退出并且使程序能够正确记录前三次猜错的数字(用三个变量记录住,还没学数组),如果输入的内容不在1-20范围之内,提示“输入
的内容不符合要求,请重新输入”,这样该怎么实现?初学者求各位大神相助。
  1. public class Cai2
  2. {
  3. public static void main(String[] args)
  4. {
  5. int midi = 10;
  6. int cuowu =0;
  7. int shuru = 0;
  8. int cuo1=0,cuo2=0,cuo3=0;
  9. System.out.println("我默念了一个1-20之间的整数,请你猜一猜");
  10. java.util.Scanner smq = new java.util.Scanner(System.in);

  11. while(shuru != midi && cuowu<4){

  12. shuru = smq.nextInt();
  13. if (shuru == midi){
  14. System.out.println("赞");
  15. }
  16. else if (shuru < midi){
  17. System.out.println("小了");
  18. cuowu++;
  19. if (cuowu == 1){
  20. cuo1 = shuru;
  21. }
  22. else if (cuowu == 2 && shuru != cuo1){
  23. cuo2 = shuru;
  24. }
  25. else if (cuowu ==3 && shuru != cuo1 && shuru != cuo2){
  26. cuo3 = shuru;
  27. }
  28. else {
  29. cuowu--;
  30. System.out.println("你已经输入过这个数字了");
  31. }
  32. }
  33. else{
  34. System.out.println("大了");
  35. cuowu++;
  36. if(cuowu == 1){
  37. cuo1 = shuru;
  38. }
  39. else if (cuowu == 2 && shuru !=cuo1){
  40. cuo2=shuru;
  41. }
  42. else if (cuowu ==3 && shuru !=cuo1 && shuru != cuo2){
  43. cuo3 = shuru;
  44. }
  45. else {
  46. cuowu--;
  47. System.out.println("你已经输过这个数字了");
  48. }
  49. }
  50. }
  51. }
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 王盟盟 于 2013-5-18 19:40 编辑

你写的这个有点乱,我重新写了一个,不知道你学过集合没有。我用到了集合,如果不知道可以再问我。
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Random;
  4. import java.util.Scanner;

  5. public class Cai2 {


  6. public static void main(String[] args) {
  7. Scanner sc=new Scanner(System.in);//输入扫描器=new Scanner(System.in);
  8. List list=new ArrayList();
  9. int theNum=new Random().nextInt(10)+1;//记录随机数,产生1--10之间的整数
  10. int wrongCount=0;//记录错误次数
  11. int inputNum=0;//用来接收输入的数
  12. while(inputNum!=theNum&&wrongCount<4)
  13. {
  14. System.out.println("请输入你猜的数:");
  15. inputNum=sc.nextInt();
  16. if(list.contains(inputNum))//用来判断是否输入过这个数,如果没有输入过,则添加到list中
  17. {
  18. System.out.println("你已经猜过这个数了");
  19. continue;
  20. }else
  21. {
  22. list.add(inputNum);
  23. }
  24. if(inputNum==theNum)
  25. {
  26. System.out.println("恭喜,猜对了");
  27. }else if(inputNum<theNum)
  28. {
  29. wrongCount++;
  30. System.out.println("你猜的数小了");
  31. }else if(inputNum>theNum)
  32. {
  33. wrongCount++;
  34. System.out.println("你猜的数大了");
  35. }
  36. if(wrongCount==4)
  37. System.out.println("你猜够了4次,游戏结束!");
  38. }
  39. System.out.println("正确的数字是:"+theNum);
  40. System.out.println("===========================================================");
  41. System.out.println("你共猜过"+list.size()+"次,分别是:");
  42. for(int i=0;i<list.size();i++)//输出曾猜过的数
  43. {
  44. System.out.print(list.get(i)+",");
  45. }

  46. }
  47. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
本帖最后由 神之梦 于 2013-5-18 19:02 编辑

{:soso_e134:}饿晕了,吃饭些{:soso_e161:}
回复 使用道具 举报
先给你个总体思路:
1、默念的那个数使用Random产生1-20之间的随机数,并用一个int型的变量random记住这个数。
2、再定义一个int型的变量guess用来记录你从键盘输入的数。
3、定义一个boolean 型变量flag作为标记,记录你是否猜中了这个数,初始值为false;
4、写一个for循环,循环条件结束的条件是guess==random,则跳出循环,或者是循环了四次自己结束。如果是guess==random,则将flag=ture;
5、判断flag标记,如果为ture则输出猜对了,如果为false,则输出猜的次数到四次了。
另外,想要记录之前输出的数,可以使用集合TreeSet,它保证元素的唯一性,只要输出的数存入集合成功,则就代表之前没有猜过这个数。
具体的实现,楼主自己动手写吧。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
赵崇友 发表于 2013-5-18 19:23
先给你个总体思路:
1、默念的那个数使用Random产生1-20之间的随机数,并用一个int型的变量random记住这个 ...

谢谢了噢。我自己去弄弄先。
回复 使用道具 举报
王盟盟 发表于 2013-5-18 18:53
你写的这个有点乱,我重新写了一个,不知道你学过集合没有。我用到了集合,如果不知道可以再问我。 ...

没有学集合,只能让我们用三个变量记录住三次输入的内容,就像我代码那样写的,另外如果输入的不是1-20范围之内的,提示“输入的内容不符合要求,请重新输入”并且不计为输错一次,这样怎么实现呢?
回复 使用道具 举报
帮自己顶上来
回复 使用道具 举报
兄弟结贴吧。。。。可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马