家庭作业
猜数字游戏:
生成一个4位的随机数,每一位都在0-9之间,每位必须不同。用户在外部输入一个猜测的4位数字,系统判断后返回结果。判断规则如下:如果用户猜测的数字正确且位置正确,则返回一个A;如果用户猜测的数字正确但是位置不正确,则返回B;
例如:随机数为:1234。如果用户输入1357,则返回1A1B(1的数字和位置正确,3的数字正确但是位置不正确);如果用户输入2468,则返回0A2B(2和4这个两个数字正确,但是位置都不对。);如果用户输入6789,则返回0A0B(用户没有猜对任何数字);只有用户输入1234,即返回4A0B的情况,才算用户猜对。
用户每次游戏共有7次机会。
利用面向对象编程
一.
public class Machine {
public static void main(String[] args){
User user=new User();
user.theOutput();
}
}
二.
public class Randomnumber {
private int [] Randomnumber=new int[4];
public int[] getRandomnumber() {
return Randomnumber;
}
public void setRandomnumber(int[] randomnumber) {
Randomnumber = randomnumber;
}
//随机产生四个数
public Randomnumber(){
for(int j=0;j<3;j++){
Randomnumber[j]=(int) (Math.random()*10);
switch(j){
case 0:
break;
case 1:
if(Randomnumber[j]==Randomnumber[j-1]){
j--;
}
break;
case 2:
if(Randomnumber[j]==Randomnumber[j-1]&&Randomnumber[j]==Randomnumber[j-2]){
j--;
}
break;
case 3:
if(Randomnumber[j]==Randomnumber[j-1]&&Randomnumber[j]==Randomnumber[j-2]&&Randomnumber[j]==Randomnumber[j-3]){
j--;
}
break;
}
}
}
}
三.
import java.util.Scanner;
public class User {
private int[] number=new int[4];
private int[] Randomnum=new int[4];
Scanner scan = new Scanner(System.in);
//输入数
public void theNumber(){
System.out.println("请输入四个不重复的数");
for(int i=0;i<4;i++){
System.out.println("请输入第"+(i+1)+"数");
number[i]=scan.nextInt();
switch(i){
case 0:
break;
case 1:
if(number[i]==number[i-1]){
System.out.println("有相同数字,请重新输入");
i-=1;
}
break;
case 2:
if(number[i]==number[i-1]&&number[i]==number[i-2]){
System.out.println("有相同数字,请重新输入");
i-=1;
}
break;
case 3:
if(number[i]==number[i-1]&&number[i]==number[i-2]&&number[i]==number[i-3]){
System.out.println("有相同数字,请重新输入");
i-=1;
}
break;
}
}
}
//比较
public String toCompare(int A,int B){
Randomnumber Randomnumber= new Randomnumber();
this.Randomnum=new Randomnumber().getRandomnumber();
for(int s=0;s<4;s++){
//randomnum数组的下标
for(int n=0;n<4;n++){ //number数组的下标
if(this.number[n]==this.Randomnum[s]){
if(n==s){
A++;
}
else{
B++;
}
}
else{
continue;
}
} //内层for语句结束
} //外层for语句结束
return A+"A"+B+"B";
}
//输出
public void theOutput(){
int A=0;
int B=0;
for(int m=1;m<8;m++){ //机会
theNumber();
String str=toCompare(0,0);
if(A!=4){
System.out.println(str+"您还有"+(7-m)+"次机会");
}
else{
System.out.println(str);
System.out.println("恭喜你成功了!");
break;
}
}
//结束
System.out.println("game over");
if(A!=4){
System.out.println("很遗憾,你的机会以用完");
}
System.out.println("欢迎下次光临");
System.exit(0);
}
}