用于循环和字符数组的Java
我正在制作一个“代码解码器”-因此有3行,第一行是参考字符串,第二行是混杂的,然后第三行是基于匹配第一个和第二个字符串计算的。例如:用于循环和字符数组的Java,java,arrays,Java,Arrays,我正在制作一个“代码解码器”-因此有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.109compare_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