黑马程序员技术交流社区

标题: 一个小程序 《猜数字》 [打印本页]

作者: Troy123    时间: 2014-8-24 14:13
标题: 一个小程序 《猜数字》
问:2014年年初,有一个网游叫《浩天奇缘》,里面有个活动叫秀智商活动,其实就是一个猜数字游戏 ;
游戏规则:系统随机取一个四位数,每个数字各不相同,然后你猜,没猜一次,系统给一次提示,如 系统取得数字是1234,而你猜的是2354,系统提示:1A2B,A表示位置也对数字也对的个数(数字4),B表示数字对了位置没对的个数(2和3),直到猜对了位置
然后通过Java程序实现,从控制台输入,然后系统给出提示,直到猜对了程序结束,并且要考虑各种输入不合法的情况
  1. import java.util.Scanner;

  2. public class GuessNumber {

  3.         /**
  4.          *  ---猜数字游戏---!
  5.          * 游戏规则:系统随机取一个4位数(4个数字各不相同),然后从控制台输入数字进行猜测,每猜一次,系统会给一个提示
  6.          * 如系统取得数字式1234,而你猜的是1437,系统会提示2A1B,2A表示有两个数数字猜对了位置也对(1和3),1B表示
  7.          * 数字对了但位置没对(4)......
  8.          */
  9.         static int flag=0;
  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                
  13.                 Scanner sc = new Scanner(System.in);
  14.                 String guess = null;
  15.                 guess = sc.nextLine();

  16.                 String str = "1234";
  17.                 while(flag<2){
  18.                         guessNumber(str,guess);
  19.                         if(flag<2){
  20.                                 guess =sc.nextLine();
  21.                         }
  22.                 }
  23.         }


  24.         private static void guessNumber(String str, String guess) {
  25.                 // TODO Auto-generated method stub
  26.                 int counta = 0;
  27.                 int countb = 0;
  28.                 char[] x = str.toCharArray();
  29.                 char[] y = guess.toCharArray();
  30.                 for(int i=0;i<x.length;i++){
  31.                         if(x[i]==y[i]){
  32.                                 counta = ++counta;
  33.                         }       
  34.                         for(int z=0;z<x.length;z++){
  35.                                 if(x[i]==y[z] && i!=z){
  36.                                         countb = ++countb;
  37.                                 }
  38.                         }
  39.                 }
  40.                 if(counta==4){
  41.                         System.out.println("猜对了");
  42.                         flag=2;
  43.                 }
  44.                 System.out.println(counta+"A"+countb+"B");
  45.         }

  46. }
复制代码

上面是自己些的  但是 我不知道怎么考虑各种输入不合法的情况  应该如何弄。。
作者: a6511631    时间: 2014-8-24 20:22
使用try、catch,catch中抛出异常,提示信息写:输入非法
作者: paul.li    时间: 2014-8-24 20:51
这个很吊的样子
作者: —Jimmy—    时间: 2014-8-24 20:56
判断一下啊,不是合法数字,要求重新输入就好了
作者: 轩辕苍穹    时间: 2014-8-24 21:44
现在看代码就眼乱




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2