0

我有一个程序应该接收一条消息,然后以所有可能的方式旋转字母(例如,a 变成 b,a 变成 c,a 变成 d...),然后将所有这些打印出来。因此,如果您在其中输入 hi,它应该会打印出 ij、jk、kl、lm 等。但是,它只会打印出其中一些旋转。这是我输入 a 得到的输出:a b d g k 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="";

        }
    }

}

4

2 回答 2

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 所提到的,请记住所有chars 都是数字'a'+1 =='b',它会大大清理您的代码。

于 2013-10-11T01:40:58.353 回答
0

尝试这个

            if (messageWordIntArray[r] <=25 ) {
                messageWordIntArray[r] = messageWordIntArray[r] + t;
            } else if (messageWordIntArray[r] >26 && t>0) {
                messageWordIntArray[r%26] = messageWordIntArray[r%26] + t;
            }
于 2013-10-11T01:29:29.797 回答