java 数字游戏,产生个0~9不重复的四位随即数,然后传参数猜这个数。具体如下:

数字游戏,游戏开始系统随机产生4个0-9不重复的四个数, 由用户输入所猜的四个数字(保证用户输入的4个是数字,并且不能重复),按回车键查阅结果是否正确(手机以?A?B形式显示).?A表示所输入的?个数字和位置都与手机的答案相同;?B表示有?个数字相同,而位置有误.
输入
显示
1234
2A0B
1564
1A0B
7834
1A2B
3984
0A2B

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Game {
private int[] nums = new int[4];

public String toString() {
StringBuffer result = new StringBuffer("");
for (int i : nums) {
result.append(i + " ");
}
return result.toString();
}

public Game() {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
Random r = new Random();
for (int i = 0; i < 4; i++) {
int k = r.nextInt(10 - i);
nums[i] = list.get(k);
list.remove(k);
}
}

public boolean validate(String r) {
if (r.length() != 4) {
return false;
}
if (!r.matches("\\d{4}")) {
return false;
}
for (int i = 0; i < 4; i++) {
if (r.lastIndexOf(r.charAt(i)) > i) {
return false;
}
}
return true;
}

private String check1(String r) {
int count = 0;
for (int i = 0; i < r.length(); i++) {
if (nums[i] == Integer.parseInt(r.charAt(i) + "")) {
count++;
}
}
return count + "A";
}

private String check2(String r) {
int count = 0;
for (int i = 0; i < r.length(); i++) {
int temp = Integer.parseInt(r.charAt(i) + "");
for (int j = 0; j < r.length(); j++) {
if (nums[j] == temp && i != j)
count++;
}
}
return count + "B";
}

public String check(String r) {
return check1(r) + check2(r);
}

public static void main(String[] args) {
Game g = new Game();
System.out.println(g);
Scanner s = new Scanner(System.in);
while (true) {
String r = s.next();
if ("exit".equals(r))
break;
if (!g.validate(r)) {
System.out.println("输入4位数字, 且不能重复");
continue;
}
String result = g.check(r);
if ("4A0B".equals(result)) {
System.out.println("恭喜, 猜对了");
break;
} else {
System.out.println(result);
}
}
}

}

--__--追问

啊, 明白了, 厉害厉害,

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-18
system create int number[4] (x=Math.random())
check numbers are different

input int num_input[4]
for i 0->3
 for j 0->3
if(num_input[i]==number[j]){
if(i==j) A++;
else B++;
}
具体的自己写吧?
第2个回答  2013-02-18
分太少,做起来麻烦

...重复的四位随即数,然后传参数猜这个数。具体如下:
System.out.println("输入4位数字, 且不能重复");continue;} String result = g.check(r);if ("4A0B".equals(result)) { System.out.println("恭喜, 猜对了");break;} else { System.out.println(result);

求教Java达人:用java编写一个猜数字游戏
package com.zuxia.cg.guest;import java.util.Random;import java.util.Scanner;\/ 猜数游戏 系统自动生成4个0-9的不重复数 用户猜 数字和系统生成的数是一样且位置相同就在数那个位置输出a,数相同但位置不同,则在数那个位置输出b 其他数字不变 author student \/ public class test { \/ 产生不...

java 正则表达式判断输入的是否为0到9不重复的数字?
\\\\d{4}表示这个字符串要是4位数字

用Java编程实现一个猜数字的游戏:系统随机产生一个1~100的数字,然后让...
1.int num = (int)(Math.random()*100+1);\/\/随机得出一个1~100的数 2.用一个变量去接收玩家输入的数,例如int i;3.用if语句,当玩家输入的数与随机数相等时(i==num),则输出语句(恭喜你猜对了).4.用else写出猜错是的语句.大致思路就是这样.建议你自己去写,只有自己写过才会懂.如有不...

JAVA猜数字游戏1.要求随机产生一个数,猜中即为赢,猜不中将提示大了还是...
package test;import java.util.Random;import java.util.Scanner;public class GuessNum {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Integer randomNum = new Random().nextInt(100), count = 0;long start = System.currentTimeMillis();boolean bingo = ...

java游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机...
输入n退出,输入y重新开始");System.out.println("系统会随机产生4个0到9之间不同的数字,请你来猜");System.out.println("输出a不仅代表你猜中了,还代表你猜对它的位置了哦!\\r\\n输出b则代表你猜中了,但位置不对哦");\/\/ 开始循环,一次循环代表一局游戏。一局结束后立刻开启下一局。

JAVA猜数字游戏:现在规则如下,输入一个1-100之间的数请人猜
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("输入初始数字:"); int input = scanner.nextInt(); int count = 0; \/\/计数 System.out.println("猜一个数字:"); for(;;){ int cai = scanner.nextIn...

编写一个Java应用程序,实现如下功能: 随机分配给客户一个1~100之间的...
{ new Gui("猜数字游戏"); } } class Gui extends Frame implements ActionListener { static int number;static int guessnumber;static TextField tx;static Label lb3,lb1,lb2;static Button bt3,bt1,bt2;Gui(String s){ super(s);lb1=new Label("单击该按钮可以产生一个0-100之间的随机...

请用JAVA编一个猜数字游戏 回答满意追加100分
private static final long serialVersionUID = 1L;private JLabel lb1;private JButton btnEnter;private JButton btnCancel;private JTextArea taDispaly;private JTextField txtEnter;private Oprator oprator;private JButton btnReplay;String tx;private JButton btnEnd;public static void main(String[] ...

求java编写数字游戏程序代码
public static void main(String[] args) { go();} private static void go() {\/\/程序逻辑结构 int aa = (int) (Math.random() * 100); \/\/ create a number from 1 to 100 System.out.println("请输入一个数字:");Scanner sc = new Scanner(System.in);int count=0;\/\/计数器,...

相似回答