我有一个应该接收信息的程序,然后以所有可能的方式旋转字母(例如a变为b,a变为c,变为d ......),然后将所有这些打印出来。因此,如果您输入hi,它应该打印出ij,jk,kl,lm等。但是,它只打印出一些旋转。这是我输入的输出: 一个 b d G ķ p v
这是应该旋转字母然后显示它们的代码。在此之前,我有一些代码将消息中的所有字符放入一个表示字母的整数数组中(1表示a,2表示b ... 27表示“”)。有人可以帮我纠正我做的任何错误,并学习下次不做错吗? 谢谢!
import java.util.*;
public class Decoder {
public static void main(String[] args) throws Exception {
int[] messageIntArray = new int[999999];
int[] messageWordIntArray = new int [1000000];
int letterCount = -1;
char messageChar;
String message = "";
boolean moreLines = true;
Scanner keyboard = new Scanner(System.in);
int r;
String rotatedMessage = "";
//[boolean running = true;
System.out.println("Enter message" + "\nMake sure you have a line at the end of your message with only a period");
while (moreLines) {
String line = keyboard.nextLine();
if (line.equals(".")) {
moreLines=false;
} else {
message = message + line + " ";
}
}
for (int q= 0; q<message.length(); q++){
messageChar= message.charAt(q);
if (messageChar == 'a' || messageChar == 'A' || messageChar == 'A') {
messageIntArray[q] = 1;
} else if (messageChar == 'b' || messageChar == 'B') {
messageIntArray[q] = 2;
} else if (messageChar == 'c' || messageChar == 'C') {
messageIntArray[q] = 3;
} else if (messageChar == 'd' || messageChar == 'D') {
messageIntArray[q] = 4;
} else if (messageChar == 'e' || messageChar == 'E') {
messageIntArray[q] = 5;
} else if (messageChar == 'f' || messageChar == 'F') {
messageIntArray[q] = 6;
} else if (messageChar == 'g' || messageChar == 'G') {
messageIntArray[q] = 7;
} else if (messageChar == 'h' || messageChar == 'H') {
messageIntArray[q] = 8;
} else if (messageChar == 'i' || messageChar == 'I') {
messageIntArray[q] = 9;
} else if (messageChar == 'j' || messageChar == 'J') {
messageIntArray[q] = 10;
} else if (messageChar == 'k' || messageChar == 'K') {
messageIntArray[q] = 11;
} else if (messageChar == 'l' || messageChar == 'L') {
messageIntArray[q] = 12;
} else if (messageChar == 'm' || messageChar == 'M') {
messageIntArray[q] = 13;
} else if (messageChar == 'n' || messageChar == 'N') {
messageIntArray[q] = 14;
} else if (messageChar == 'o' || messageChar == 'O') {
messageIntArray[q] = 15;
} else if (messageChar == 'p' || messageChar == 'P') {
messageIntArray[q] = 16;
} else if (messageChar == 'q' || messageChar == 'Q') {
messageIntArray[q] = 17;
} else if (messageChar == 'r' || messageChar == 'R') {
messageIntArray[q] = 18;
} else if (messageChar == 's' || messageChar == 'S') {
messageIntArray[q] = 19;
} else if (messageChar == 't' || messageChar == 'T') {
messageIntArray[q] = 20;
} else if (messageChar == 'u' || messageChar == 'U') {
messageIntArray[q] = 21;
} else if (messageChar == 'v' || messageChar == 'V') {
messageIntArray[q] = 22;
} else if (messageChar == 'w' || messageChar == 'W') {
messageIntArray[q] = 23;
} else if (messageChar == 'x' || messageChar == 'X') {
messageIntArray[q] = 24;
} else if (messageChar == 'y' || messageChar == 'Y') {
messageIntArray[q] = 25;
} else if (messageChar == 'z' || messageChar == 'Z') {
messageIntArray[q] = 26;
}
else if (messageChar == ' ') {
messageIntArray[q] = 27;
}
letterCount++;
int letter = messageIntArray[q];
messageWordIntArray[letterCount] = letter;
}
for (int t = 0; t<26; t++) {
for (r=0; r < letterCount; r++){
if (messageWordIntArray[r] <=25 ) {
messageWordIntArray[r] = messageWordIntArray[r] + t;
} else if (messageWordIntArray[r] == 26 && t>0) {
messageWordIntArray[r] = 0;
messageWordIntArray[r] = messageWordIntArray[r] + t;
}
if (messageWordIntArray[r] == 1) {
rotatedMessage = rotatedMessage + "a";
} else if (messageWordIntArray[r] == 2) {
rotatedMessage = rotatedMessage + "b";
} else if (messageWordIntArray[r] == 3) {
rotatedMessage = rotatedMessage + "c";
} else if (messageWordIntArray[r] == 4) {
rotatedMessage = rotatedMessage + "d";
} else if (messageWordIntArray[r] == 5) {
rotatedMessage = rotatedMessage + "e";
} else if (messageWordIntArray[r] == 6) {
rotatedMessage = rotatedMessage + "f";
} else if (messageWordIntArray[r] == 7) {
rotatedMessage = rotatedMessage + "g";
} else if (messageWordIntArray[r] == 8) {
rotatedMessage = rotatedMessage + "h";
} else if (messageWordIntArray[r] == 9) {
rotatedMessage = rotatedMessage + "i";
} else if (messageWordIntArray[r] == 10) {
rotatedMessage = rotatedMessage + "j";
} else if (messageWordIntArray[r] == 11) {
rotatedMessage = rotatedMessage + "k";
} else if (messageWordIntArray[r] == 12) {
rotatedMessage = rotatedMessage + "l";
} else if (messageWordIntArray[r] == 13) {
rotatedMessage = rotatedMessage + "m";
} else if (messageWordIntArray[r] == 14) {
rotatedMessage = rotatedMessage + "n";
} else if (messageWordIntArray[r] == 15) {
rotatedMessage = rotatedMessage + "o";
} else if (messageWordIntArray[r] == 16) {
rotatedMessage = rotatedMessage + "p";
} else if (messageWordIntArray[r] == 17) {
rotatedMessage = rotatedMessage + "q";
} else if (messageWordIntArray[r] == 18) {
rotatedMessage = rotatedMessage + "r";
} else if (messageWordIntArray[r] == 19) {
rotatedMessage = rotatedMessage + "s";
} else if (messageWordIntArray[r] == 20) {
rotatedMessage = rotatedMessage + "t";
} else if (messageWordIntArray[r] == 21) {
rotatedMessage = rotatedMessage + "u";
} else if (messageWordIntArray[r] == 22) {
rotatedMessage = rotatedMessage + "v";
} else if (messageWordIntArray[r] == 23) {
rotatedMessage = rotatedMessage + "w";
} else if (messageWordIntArray[r] == 24) {
rotatedMessage = rotatedMessage + "x";
} else if (messageWordIntArray[r] == 25) {
rotatedMessage = rotatedMessage + "y";
} else if (messageWordIntArray[r] == 26) {
rotatedMessage = rotatedMessage + "z";
} else if (messageWordIntArray[r] == 27) {
rotatedMessage = rotatedMessage + " ";
}
}
System.out.print(rotatedMessage+"\n");
rotatedMessage="";
}
}
}
答案 0 :(得分:0)
试试这个
if (messageWordIntArray[r] <=25 ) {
messageWordIntArray[r] = messageWordIntArray[r] + t;
} else if (messageWordIntArray[r] >26 && t>0) {
messageWordIntArray[r%26] = messageWordIntArray[r%26] + t;
}
答案 1 :(得分:0)
变化
if (messageWordIntArray[r] <=25 ) {
messageWordIntArray[r] = messageWordIntArray[r] + t;
} else if (messageWordIntArray[r] == 26 && t>0) {
messageWordIntArray[r] = 0;
messageWordIntArray[r] = messageWordIntArray[r] + t;
}
到
if (messageWordIntArray[r] <=25 ) {
messageWordIntArray[r]++;
} else if (messageWordIntArray[r] == 26 && t>0) {
messageWordIntArray[r] = 0;
}
由于您没有重新初始化该阵列,因此请继续添加该阵列。
此外,正如Hoover Craft所提到的,请记住所有char
都是数字而'a'+1 =='b'
,它会大大清理您的代码。