1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 编程中思维方式——逆向思维案例

编程中思维方式——逆向思维案例

时间:2018-10-05 01:32:41

相关推荐

编程中思维方式——逆向思维案例

逆向思维的思考方式案例:

有时候在处理问题时可能很棘手,一时想不出好的方法,不妨反过来看看,下面的例子就是:

说明:程序中有个bug

package s01_javabasic.day06;import java.util.Scanner;public class GuessingGame {public static void main(String[] args) {//表示玩家猜测的次数int count = 0;//用于保存判断的结果int[] result = new int[2];//全都都对,字符对位置不对Scanner scanner =new Scanner(System.in);System.out.println("GuessingGame>欢迎尝试猜字母游戏!"); //表示猜测的字符串char[] chs = generate();System.out.println(chs);System.out.println("GuessingGame>游戏开始,请输入你所猜的5个字母序列:(exit--退出)");while(true){String inputStr= scanner.next().trim().toUpperCase();if("EXIT".equals(inputStr)){System.out.println("GuessingGame>谢谢你的尝试,再见!");break;}char[] input = inputStr.toCharArray();//result = check(chs,input);if(result[0]==chs.length){//完全猜对的情况int score = 100*chs.length-count*10;System.out.println("GuessingGame恭喜你猜对了!你的得分是"+score);break;}else{count++;System.out.println("GuessingGame>你猜对"+result[1]+"个字符,其中"+result[0]+"个字符的位置正确!(总次数="+count+",exit--退出");}}scanner.close();}/*** 随机生成需要猜测的字母序列* @return 存储随机字符的数组*/private static char[] generate() {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'};boolean[] flags = new boolean[letters.length];char[] chs = new char[5];for(int i=0;i<chs.length;i++){int index;do{index= (int)(Math.random()*(letters.length));}while(flags[index]);//判断生成的字符是否重复chs[i] = letters[index];flags[index] = true;}return chs;}/*** 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果* @param chs 程序生成的字符序列* @param input 玩家输入的字符序列* @return 存储比较的结果。返回值int数组 的长度为2 其中,索引为0的位置* 用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)*/private static int[] check(char[] chs, char[] input) {int[] result = new int[2];for(int i=0;i<input.length;i++){for(int j=0;j<chs.length;j++){if(input[i]==chs[j]){//判断字符是否正确result[1]++;if(i==j){//判断位置是否正确result[0]++;//次数累加}break;//判断有一个字符相同,不再需要与其他字符比较,(5个字符不同)}}}return result;}/** BUG解决:check方法中如果用户录入AAAAA ,程序随机字符序列ABCDE* 会输出5个字符对的问题* 原因与解决:* 用户录入不可控可能会录入重复字符,导致取外层用户的每一个字符与内层比较时* 会重复判断相同的字符,认为有多个字符相同* 如果将程序随机字符序列作为外层就不会出现相同的字符* 在与用户录入字符序列比较时就不出现以上问题。* */}

运行程序后测试BUG截图:

一个简单的例子说明下逆向思维的使用。大家若有其他好的例子可以交流交流!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。