用于循环和字符数组的Java

用于循环和字符数组的Java,java,arrays,Java,Arrays,我正在制作一个“代码解码器”-因此有3行,第一行是参考字符串,第二行是混杂的,然后第三行是基于匹配第一个和第二个字符串计算的。例如: 敏捷的棕色狐狸跳过了懒狗 UIFARVJDLACSPXOAGPYAKVNQTAPWFSAUIFAMB ZAEPH XFABSFAWFSZACBEAUIJOHTAIBAIB 我要做的是获取3个字符串,将它们转换为字符数组,然后查看第一个字符串,找到它在字母表数组中的位置,然后在该位置输入同一位置另一个数组中第二个字符串的字母。因此,稍后,我可以在字母表中找到一个字母

我正在制作一个“代码解码器”-因此有3行,第一行是参考字符串,第二行是混杂的,然后第三行是基于匹配第一个和第二个字符串计算的。例如:

  • 敏捷的棕色狐狸跳过了懒狗

  • UIFARVJDLACSPXOAGPYAKVNQTAPWFSAUIFAMB ZAEPH

  • XFABSFAWFSZACBEAUIJOHTAIBAIB

  • 我要做的是获取3个字符串,将它们转换为字符数组,然后查看第一个字符串,找到它在字母表数组中的位置,然后在该位置输入同一位置另一个数组中第二个字符串的字母。因此,稍后,我可以在字母表中找到一个字母,并在第二个数组中得到对应的字母

    问题-没有任何内容输入到第二个数组。。。它是空的

    如果需要任何澄清,请告诉我

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter First String:"); // First String
        String first_string = br.readLine();
        System.out.print("Enter Second String:"); // Second String 
        String second_string = br.readLine();
        System.out.print("Enter Third String:"); // Third String 
        String third_string = br.readLine();
    
        char[] first = first_string.toCharArray();
        char[] second = second_string.toCharArray();
        char[] third = third_string.toCharArray();
        char[] compare_a = {'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'}; //length = 26
        char[] compare_b = new char[26]; //length = 26
    
        for(int x =0; x < first.length ; x++){// going through first array
            char first_letter = first[x]; // gets letter from first string
    
            for(int z = 0; z < 26; z++){ // looks through alphabet for the position of the letter
                if(first_letter == compare_a[z]){ // if the letter is found at a certain position
                    // System.out.println(first_letter + " = " + compare_a[z] + " " + compare_b[z]  + " " +  second[x]);
                    compare_b[z] = second[x]; // insert into the same position on the second array
                }
            }
        }
    
        for(int t =0; t<26; t++){
    
            char m = compare_b[t];
            System.out.print(m); //Printing out array of new letters
        }
    }
    
    它只是没有进入数组

    臭虫 应该是

    compare_b[z] = second[z]; 
    
    但是

    compare_b[z] = second[x];
    
    固定代码
    使用debugger或add
    println
    语句确保字符串包含所需的内容。我确实这样做了,而且所有字符串都有我想要的内容,但“compare_b”数组不包含新值。使用debugger逐步检查代码。if语句的计算结果是否始终为false?实际上,您不需要将字符串转换为char数组;您可以使用charAt()方法确定字符的位置if语句中的调试行(注释掉)是否显示了在调试程序中单步执行代码时所需的内容?是的-我正在摆弄并使其空了一秒钟。。。但是它不应该是这样的,因为当我输出这个:System.out.println(第一个字母+“=”+比较a[z]+“”+比较b[z]+“”+第二个[x]);正确的值在那里。。。但它们不会输入到compare_b[]array@Ds.109
    compare_b[z]=second[z]这是伟大的,它输入到数组中!但是我想让它把字母输入到与字母表相同的位置,所以,第一个U应该在数组的第19位。。这样我就可以把它和字母表匹配起来了。没关系,它成功了!我使用了x,它之所以有效是因为某些原因:)
    
    compare_b[z] = second[x];
    
    public static void main(String[] args) {
    
            String first_string = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG";
            String second_string = "UIFARVJDLACSPXOAGPYAKVNQTAPWFSAUIFAMB ZAEPH";
            String third_string = "XFABSFAWFSZACBEAQFPQMFAEPJOHAWFSZACBEAUIJOHTAIBAIB";
    
            char[] first = first_string.toCharArray();
            char[] second = second_string.toCharArray();
            char[] third = third_string.toCharArray();
            char[] compare_a = {'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'}; //length = 26
            char[] compare_b = new char[26]; //length = 26
    
            for (int x = 0; x < first.length; x++) {// going through first array
                char first_letter = first[x]; // gets letter from first string
    
                for (int z = 0; z < 26; z++) { // looks through alphabet for the position of the letter
                    if (first_letter == compare_a[z]) { // if the letter is found at a certain position
                        // System.out.println(first_letter + " = " + compare_a[z] + " " + compare_b[z]  + " " +  second[x]);
                        compare_b[z] = second[z]; // insert into the same position on the second array
                    }
                }
            }
    
            for (int t = 0; t < 26; t++) {
    
                char m = compare_b[t];
                System.out.print(m); //Printing out array of new letters
            }
        }
    
    UIFARVJDLACSPXOAGPYAKVNQTA