| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 626 人关注过本帖
标题:随便写了个猜数字的游戏
只看楼主 加入收藏
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
 问题点数:0 回复次数:3 
随便写了个猜数字的游戏

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);}
}
}

搜索更多相关主题的帖子: 数字 游戏 
2007-08-03 11:16
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
猜一个4位数,一共10次机会,大家帮忙看看怎么改进下,我觉得这个太长了

I'm here, as always...
2007-08-03 11:17
justing_xxt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-3-9
收藏
得分:0 

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

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();
}
}

2007-08-03 16:39
hwoarangzk
Rank: 4
来 自:冰封王座
等 级:贵宾
威 望:12
帖 子:1894
专家分:0
注 册:2007-7-17
收藏
得分:0 
LS的兄台很好,很强大...

I'm here, as always...
2007-08-03 17:29
快速回复:随便写了个猜数字的游戏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011854 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved