猜数字游戏(一道java笔试题)
题目描述:系统随机生成一个4位随机数,然后用户输入一个4位数,如果随机数跟输入的4位数对应位的值相同则用A表示,如果随机数跟输入的4位数有相同的数字,但不在同一个位置上,则用B表示。如:随机数1523 输入的是:2323则输出:2A0B,随机数:1234 输入数:1234 输出4A0B。代码如下:
package com.xie.guessing;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
public class NumberGuessing { private static final int count=7; private int aAcount=0; private int bAcount=0; public static void main(String[] args) { int index=0; long guessedNum=(long)(Math.random()*10000); String toBeGuessNum=null; BufferedReader br=null; try { br=new BufferedReader(new InputStreamReader(System.in)); toBeGuessNum = br.readLine(); } catch (IOException e) { e.printStackTrace(); } NumberGuessing ng=new NumberGuessing(); while (index<count) { int m=ng. findAcount(guessedNum,toBeGuessNum); int n=ng.findBcount(guessedNum, toBeGuessNum); System.out.println("猜测的数字为:"+m+"A"+n+"B"); if (m==4) { System.out.println("恭喜你猜对了。"); System.out.println("你猜测了"+(index+1)+"次。"); break; } try { toBeGuessNum=br.readLine(); } catch (IOException e) { e.printStackTrace(); } index++; } } private int findAcount(long m,String toBeGuessedNum){ aAcount=0; String k=Long.toString(m); System.out.println(k); if (k.length()==toBeGuessedNum.length()) { for (int i = 0; i < k.length(); i++) { if (k.charAt(i)==toBeGuessedNum.charAt(i)) { aAcount++; } } }else { System.out.println("猜测数字跟生成数字长度不一致"); }
return aAcount; } private int findBcount(long m,String toBeGuessedNum){ bAcount=0; String k=Long.toString(m); System.out.println(k); if (k.length()==toBeGuessedNum.length()) { for (int i = 0; i < k.length(); i++) { if (k.charAt(i)!=toBeGuessedNum.charAt(i)) { for (int j = 0; j < toBeGuessedNum.length(); j++) { if (k.charAt(i)==toBeGuessedNum.charAt(j)) { bAcount++; } } } } }else { System.out.println("猜测数字跟生成数字长度不一致"); }
return bAcount; }
}
