猜数字
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/**
* Created by 80656 on 2018/2/22.
*/
public class GuessNumber {
private int[] numbers = new int[4];
private void generateNumbers() {
Random random = new Random();
for (int i =0; i < 4; i++) {
while (true) {
int number = random.nextInt(10);
if (!isContainNumber(number)) {
numbers[i] = number;
break;
}
}
}
//System.out.println(getPrintNumber(numbers));
}
private boolean isContainNumber(int number) {
for (int i : numbers) {
if (i == number) {
return true;
}
}
return false;
}
private boolean validateNumber(int[] validateNumbers) {
int orderCount = 0;
int containCount = 0;
for (int i = 0; i < validateNumbers.length; i ++) {
if (isContainNumber(validateNumbers[i])) {
containCount++;
}
if (numbers[i] == validateNumbers[i]) {
orderCount++;
}
}
if (orderCount == 4 && containCount == 4) {
System.out.println("恭喜你猜数字成功");
return true;
}
System.out.println(getPrintNumber(validateNumbers) + " " + containCount + " " + orderCount);
return false;
}
public int[] getNumbersFromString(String numberStr) {
int[] guessedNumbers = new int[4];
try {
String[] strs = numberStr.split(" ");
for (int i = 0; i < 4; i++) {
guessedNumbers[i] = Integer.valueOf(strs[i]);
}
} catch (Exception e) {
System.out.println("请重新输入数字");
}
return guessedNumbers;
}
private String getPrintNumber(int[] printNumbers) {
String printNumberStr = "";
for (int printNumber : printNumbers) {
printNumberStr += printNumber + " ";
}
return printNumberStr;
}
public static void main(String[] args) throws IOException {
GuessNumber guessNumber = new GuessNumber();
guessNumber.generateNumbers();
System.out.println("请输入数字例如:1 2 3 4");
System.out.println("* * * * 包含 顺序");
int[] validateNumbers = new int[4];
int count = 0;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
do {
String numberString = bufferedReader.readLine();
validateNumbers = guessNumber.getNumbersFromString(numberString);
count ++;
} while (!guessNumber.validateNumber(validateNumbers));
bufferedReader.close();
System.out.println("你本次花了" + count +"次完成游戏,加油!!");
}
}