猜字符小游戏 程序=算法+结构 1、设计数据结构: 1)char[] chs;//随机生产的字符数组 2)char[] input;//用户输入的字符数组 3)int letterRight;//字符对 个数 int positionRight;//字符对个数 int[] result; int[] result;//对比的结果 4)int score;//得分 int count;//猜错次数 2、设计程序结构:方法 1)、主方法: public static void main(String[] args){ pass; } 2)、随机生成字符数组:len=5; public static char[] generate(int len){ char[] chs=new char[len]; //给chs中每个元素赋值 return chs; } 3)对比:随机字符与用户输入的字符数据 public static int[] check(char[] chs.char[] input){ //比较 result[]=new int[2]{5,3}; return result; } 3、设计算法:方法的实现
1 package day02; 2 import java.util.Random; 3 import java.util.Scanner; 4 public class Guessing { 5 6 public static void main(String[] args) { 7 Scanner scan=new Scanner(System.in); 8 System.out.println("随机生成一个字符数组:"); 9 // int len=scan.nextInt(); 10 11 char[] chs=generate(); 12 for(char i:chs) { 13 System.out.print(i); 14 } 15 System.out.println("请输入字符数组长度5的字符串:"); 16 String input=scan.next(); 17 char[] myinput=new char[5]; 18 for(int index=0;index<chs.length;index++) { 19 //input[index]=scan.next(); 20 //input[index]=(char)System.in.read(); 21 myinput[index]=input.charAt(index); 22 } 23 24 int[] result=check(chs,myinput); 25 System.out.println("字符对"+result[0]+"位置对"+result[1]); 26 27 } 28 // //随机生成字符数组:len=5; 29 // public static char[] generate(int len){ 30 // char[] chs=new char[len]; 31 // //给chs中每个元素赋值 32 // Random random =new Random(); 33 // int[] arr=random.ints(len,65,91).toArray();//生成[65,91)之间的随机整数 34 // for (int i = 0; i < arr.length; i++) { 35 // //System.out.println(arr[i]); 36 // chs[i]=(char)(arr[i]); 37 // } 38 // return chs; 39 // } 40 // //随机生成字符数组:len=5; 41 // public static char[] generate(){ 42 // char[] chs=new char[5]; 43 // Random random =new Random(); 44 // int[] arr=random.ints(5,65,91).toArray(); 45 // for (int i = 0; i < arr.length; i++) { 46 // //System.out.println(arr[i]); 47 // chs[i]=(char)(arr[i]); 48 // } 49 // return chs; 50 // } 51 // 52 public static char[] generate(){ 53 char[] chs=new char[5]; 54 char[] letters= {'A','B','C','D','E','F','G','H','I','J','K', 55 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 56 boolean[] flags=new boolean[letters.length]; 57 58 // System.out.println(letters[index]); 59 for(int i=0;i<chs.length;i++) { 60 int index; 61 do { 62 index=(int)(Math.random()*26);//0~~~26随机变量 63 }while(flags[index]==true); 64 65 chs[i]=letters[index]; 66 flags[index]=true; 67 //chs[i]=(char)(index); 68 69 } 70 // for(char v:chs) { 71 // System.out.println(v); 72 // } 73 74 return chs; 75 } 76 //对比:随机字符与用户输入的字符数据 77 public static int[] check(char[] chs,char[] input){ 78 //比较resilt[0]字符对 result[1]位置对 79 int[] result=new int[2]; 80 if (chs.length==input.length) { 81 System.out.println("两个数组长度相等,可以比较!"); 82 for(int j =0;j<chs.length;j++) { 83 for(int p=0;p<input.length;p++) { 84 //判断值相等,记录一次 85 if(input[p]==chs[j]) { 86 result[0]++; 87 //判断当值相等,位置是否相等。 88 if (p==j) { 89 result[1]++; 90 } 91 break; 92 } 93 94 } 95 } 96 } 97 else { 98 System.out.println("两个数组长度不相等,请重新输入"); 99 100 } 101 return result; 102 } 103 104 }
1 package day02; 2 import java.util.Random; 3 import java.util.Scanner; 4 public class Guessing { 5 6 public static void main(String[] args) { 7 Scanner scan=new Scanner(System.in); 8 System.out.println("随机生成一个字符数组:"); 9 // int len=scan.nextInt(); 10 11 char[] chs=generate(); 12 for(char i:chs) { 13 System.out.print(i); 14 } 15 System.out.println("请输入字符数组长度5的字符串:"); 16 String input=scan.next(); 17 //第一种 把string 转换成char 数组 18 // char[] myinput=new char[input.length()]; 19 // for(int index=0;index<input.length();index++) { 20 // //input[index]=scan.next(); 21 // //input[index]=(char)System.in.read(); 22 // myinput[index]=input.charAt(index); 23 // } 24 //第二种 把string 转换成char 数组 25 char[] myinput=input.toCharArray(); 26 27 28 int[] result=check(chs,myinput); 29 System.out.println("字符对"+result[0]+"位置对"+result[1]); 30 31 } 32 // //随机生成字符数组:len=5; 33 // public static char[] generate(int len){ 34 // char[] chs=new char[len]; 35 // //给chs中每个元素赋值 36 // Random random =new Random(); 37 // int[] arr=random.ints(len,65,91).toArray();//生成[65,91)之间的随机整数 38 // for (int i = 0; i < arr.length; i++) { 39 // //System.out.println(arr[i]); 40 // chs[i]=(char)(arr[i]); 41 // } 42 // return chs; 43 // } 44 // //随机生成字符数组:len=5; 45 // public static char[] generate(){ 46 // char[] chs=new char[5]; 47 // Random random =new Random(); 48 // int[] arr=random.ints(5,65,91).toArray(); 49 // for (int i = 0; i < arr.length; i++) { 50 // //System.out.println(arr[i]); 51 // chs[i]=(char)(arr[i]); 52 // } 53 // return chs; 54 // } 55 // 56 public static char[] generate(){ 57 char[] chs=new char[5]; 58 char[] letters= {'A','B','C','D','E','F','G','H','I','J','K', 59 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 60 boolean[] flags=new boolean[letters.length]; 61 62 // System.out.println(letters[index]); 63 for(int i=0;i<chs.length;i++) { 64 int index; 65 do { 66 index=(int)(Math.random()*26);//0~~~26随机变量 67 }while(flags[index]==true); 68 69 chs[i]=letters[index]; 70 flags[index]=true; 71 //chs[i]=(char)(index); 72 73 } 74 // for(char v:chs) { 75 // System.out.println(v); 76 // } 77 78 return chs; 79 } 80 //对比:随机字符与用户输入的字符数据 81 public static int[] check(char[] chs,char[] input){ 82 //比较resilt[0]字符对 result[1]位置对 83 int[] result=new int[2]; 84 if (chs.length==input.length) { 85 System.out.println("两个数组长度相等,可以比较!"); 86 for(int j =0;j<chs.length;j++) { 87 for(int p=0;p<input.length;p++) { 88 //判断值相等,记录一次 89 if(input[p]==chs[j]) { 90 result[0]++; 91 //判断当值相等,位置是否相等。 92 if (p==j) { 93 result[1]++; 94 } 95 break; 96 } 97 98 } 99 } 100 } 101 else { 102 System.out.println("两个数组长度不相等,请重新输入"); 103 104 } 105 return result; 106 } 107 108 }