首页 > 解决方案 > 使用 for 循环在 CHAR[] 数组中查找特定 CHAR 元素 = 始终为 False

问题描述

所以我正在做作业,这应该是一场牛和牛的游戏。

我生成了 4 个随机整数进行猜测,用户输入一个 4 位数字。然后我验证该数字确实是 4 位数长并将其转换为 CHAR 数组。之后,我想将随机生成的数字与数组中的元素一一进行比较,如果相等,则将“1”添加到计数器中。

我已经尝试了许多我在互联网上找到的类似问题的解决方案,其中一些非常困难的解决方案我没有,因为它们看起来有点矫枉过正,因为我对编程还是很陌生,我觉得好像我错过了一些简单而明显的东西。问题是,每次我遍历数组时,元素都应该匹配,但条件总是“假”。

这是代码的有问题的部分:

    Scanner Sc1 = new Scanner(System.in);
    if(Sc1.hasNextInt()){                            // is it a number ? ?
        int user_guess = Sc1.nextInt();
        String user_guess_string = Integer.toString(user_guess);                  // how.
        int length = user_guess_string.length();                                   // many
        if(length != 4){                                                           //digits
            System.out.println("On vaja 4 numbrid.Mäng hakkab otsast pihta");
        cows_and_bulls();}

        char[] player_number = user_guess_string.toCharArray();  
        char num0 = (char)random1;  //  casting
        char num1 = (char)random2;  //  random numbers
        char num2 = (char)random3;   //  into
        char num3 = (char)random4;    //  chars
        int cows = 0;    // counter of instances where a number guessed by the user is in array
        int bulls = 0;  // counter of instances where a guessed number is in array and correct spot

        for (char element : player_number) {
            if (element == num0) {
                cows = cows + 1;
            }
        }

        System.out.println(cows);
        }

    else{ System.out.println("Not a number. Game will restart");
        cows_and_bulls();}

    }

我也试过这个:

        for (int i = 0; i < 4; i++) {
            char c = Array.getChar(player_number,i);
            if (num0 == c) {
                System.out.println("works");
                break;
            }
        }

我知道我在这方面很糟糕,请帮助。

标签: javaarraysfor-loopchar

解决方案


我不确定你从哪里得到random1,random2和from 因为它不是你上面粘贴的逻辑random3random4一部分但是这里的问题是你没有将 '0' 的 ASCII 添加48到上面的值中同时将它们转换为字符.

假设您拥有的所有随机数都是介于 之间的有效数字0 - 9,则以下应该有效。

char num0 = (char)(48 + random1);
char num1 = (char)(48 + random2);
...
...

推荐阅读