1. 程式人生 > >字元匹配,猜字元

字元匹配,猜字元

/**  *         隨機產生四個不相同的字元,然後輸入4個字元(一串),與這四個隨機字元比  *     較,不相同則記錄其位置,重新猜測其值並輸入,直到完全猜對,最後輸出匹配的個數。  */

package package2;

import java.util.Random; import java.util.Scanner;

/**  *         random 4 chars as test codes,make it single with no as the same.  *     system.out it(can't see).and then enter 4 chars,test if they are matches.   */ public class matchesDemo {     public static void main(String[] args) {         char[] testChars = new char[4];         //receive and print testChars.         testChars = randomChars();         System.out.println("the testChars code:");         for(int i = 0;i<testChars.length;i++){             System.out.print(testChars[i]+" ");         }         System.out.println();         compareChars(testChars);              }     //build up a method,return 4 chars as testChar without the same.     public static char[] randomChars(){         char letters[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};         //random 4 numbers from 0 to 26 as the index of charArray in letters.         char charArray[] = new char[4];         for(int i=0;i<4;i++){             int randomNum = new Random().nextInt(26);             charArray[i] = letters[randomNum];         }         /**          * make sure that it don't to be the same:          *         from 0 to 4,every char at this index,ever same to the every char behind itself,random a new number as its index in letters.          * as while,retest the char(0-4) with its after char.          */         boolean flag;         for(int j=0;j<4;j++){             flag = false;             do{                 for(int k=j+1;k<4;k++){                     if(charArray[j]==charArray[k]){                         flag = true;                         charArray[k] = letters[new Random().nextInt(26)];                     }                 }             }while(flag);         }         return charArray;     }          //build up a method,scanner 4 chars to be your chars,and matches them with testChars,print how much they matches.     public static void compareChars(char[] testChars){         Scanner in = new Scanner(System.in);         char[] myChars = new char[4];                  System.out.println("enter your 4 chars as a string:");         String s = in.nextLine();         for(int i=0;i<testChars.length;i++){             myChars[i] = s.charAt(i);         }         int matchesNum = 0;         for(int j=0;j<testChars.length;j++){             if(myChars[j]==testChars[j]){                 matchesNum++;             }else{                 System.out.println("the index of "+j+" is not matches!");                 System.out.println("enter again:");                 myChars[j] = new Scanner(System.in).nextLine().charAt(0);                 j--;             }         }         System.out.println("the total numbers that matches:"+matchesNum);     } }

結果示例(the result):

the testChars code: j f e b  enter your 4 chars as a string: jbeb the index of 1 is not matches! enter again: f the total numbers that matches:4