当前位置: 代码迷 >> Java Web开发 >> 随便写了个猜数字的游戏
  详细解决方案

随便写了个猜数字的游戏

热度:266   发布时间:2007-08-03 11:16:40.0
随便写了个猜数字的游戏

import java.io.*;

public class g {
public static void main(String args[]) throws IOException{
int num[]=new int[4];
int flag1=0,flag2=0,i,j;
int rnum[]=new int[4];
int A=0,B=0;
int MAX=9;
String result="";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int f=0;
int a=0,b=0,c=0,d=0;
a=(int)(Math.random()*10);
while(f!=1){
b=(int)(Math.random()*10);
if(a!=b){f=1;}
}
f=0;
while(f!=1){
c=(int)(Math.random()*10);
if(c!=a&&c!=b){f=1;}
}
f=0;
while(f!=1){
d=(int)(Math.random()*10);
if(d!=a&&d!=b&&d!=c){f=1;}
}
num[0]=a;
num[1]=b;
num[2]=c;
num[3]=d;
for(i=0;i<4;i++){
result+=num[i];
}
System.out.println("Please input your numbers:");
while(flag1<=MAX){
String s = br.readLine();
int snum=Integer.parseInt(s);
rnum[0]=snum/1000;
rnum[1]=(snum-rnum[0]*1000)/100;
rnum[2]=(snum-rnum[0]*1000-rnum[1]*100)/10;
rnum[3]=snum-rnum[0]*1000-rnum[1]*100-rnum[2]*10;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(rnum[i]==num[i]) {A++;break;}
if(rnum[i]==num[j]) {B++;break;}
}
}
if(A==4) {flag2=1;flag1=MAX+1;System.out.println("Succeed!Number is:"+result);break;}
System.out.println("A:"+A+" B:"+B);
flag1++;
A=B=0;
}
if(flag2==0){System.out.print("Failed! Number is:"+result);}
}
}

搜索更多相关主题的帖子: 数字  游戏  

----------------解决方案--------------------------------------------------------
猜一个4位数,一共10次机会,大家帮忙看看怎么改进下,我觉得这个太长了
----------------解决方案--------------------------------------------------------

给你来个更长的,以前写的,嘿嘿。。。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class GuessNumber {
private List sequence = null;

public GuessNumber() {
refresh();
}

public String check(String input, List target) {
int num_A = 0;
int num_B = 0;

List<Integer> inputSeq = new ArrayList<Integer>();
for (int i = 0; i < input.length(); i++) {
inputSeq.add(Integer.valueOf(input.substring(i, i + 1)));
}

for (int index = 0; index < inputSeq.size(); index++) {
int position = target.indexOf(inputSeq.get(index));
if (position != -1) {
if (position == index) {
num_A++;
} else {
num_B++;
}
}
}
return num_A + "A" + num_B + "B";
}

public void process() throws IOException {
System.out.println("Please enter 4 unrepeatedly numbers: ");
int guessTimes = 0;
while (true) {
BufferedReader stdin = new BufferedReader(new InputStreamReader(
System.in));
String input = stdin.readLine();

if ("4A0B".equals(check(input, sequence)) && guessTimes < 10) {
System.out.println("Congratunations, you got it!");
break;
}
guessTimes++;
System.out.println(check(input, sequence) + " You have "
+ (10 - guessTimes) + " chances left...");
if (10 == guessTimes) {
System.out.println("You are failed!");
break;
}
}
System.out.println("Have another try? Y/N");
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
String option = stdin.readLine();
if (option.equalsIgnoreCase("Y")) {
refresh();
process();
} else {
System.out.println("Bye!");
}
}

public void refresh() {
Random rand = new Random();
List<Integer> target = new ArrayList<Integer>();
while (true) {
Integer number = Integer.valueOf(rand.nextInt(10));
if (!target.contains(number)) {
target.add(number);
}
if (target.size() == 4) {
break;
}
}
sequence = target;
}
public static void main(String[] args) throws IOException {
GuessNumber guess = new GuessNumber();
guess.process();
}
}


----------------解决方案--------------------------------------------------------
LS的兄台很好,很强大...
----------------解决方案--------------------------------------------------------
  相关解决方案