循环没有显示正确的输出Java

时间:2013-10-11 01:08:17

标签: java

我有一个应该接收信息的程序,然后以所有可能的方式旋转字母(例如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="";

        }
    }

}

2 个答案:

答案 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',它会大大清理您的代码。