1

我正在尝试制作一个程序,用户输入一条消息,然后程序将其转换为数字(例如 a=1、b=2 等)。但是,我没有得到任何输出!任何帮助,将不胜感激。我的代码如下。

import java.io.PrintStream;
import java.util.*;


public class AllRand25 {
public static void main(String[] args) {


    int[] letterArray;
    int[] wordArray;
    int l = 0;
    String messageWord;
    char messageChar;

    letterArray = new int[26];
    int[] messageArray = new int[10];

    int y = 0;

    System.out.print("Enter your message");
    Scanner scanner = new Scanner(System.in);
    String message = scanner.nextLine();

    while (scanner.hasNext()) {

        messageWord = scanner.next(message);

        l = messageWord.length();
         Scanner charScan = new Scanner(messageWord);

for(int i = 0; i < messageWord.length(); i++){

    messageChar = messageWord.charAt(i);


    if (messageChar == 'a' || messageChar == 'A' || messageChar == 'A') {
        messageArray[y] = 1;

    } else if (messageChar == 'b' || messageChar == 'B') {
        messageArray[y] = 2;
    } else if (messageChar == 'c' || messageChar == 'C') {
        messageArray[y] = 3;
    } else if (messageChar == 'd' || messageChar == 'D') {
        messageArray[y] = 4;
    } else if (messageChar == 'e' || messageChar == 'E') {
        messageArray[y] = 5;
    } else if (messageChar == 'f' || messageChar == 'F') {
        messageArray[y] = 6;
    } else if (messageChar == 'g' || messageChar == 'G') {
        messageArray[y] = 7;
    } else if (messageChar == 'h' || messageChar == 'H') {
        messageArray[y] = 8;
    } else if (messageChar == 'i' || messageChar == 'I') {
        messageArray[y] = 9;
    } else if (messageChar == 'j' || messageChar == 'J') {
        messageArray[y] = 10;
    } else if (messageChar == 'k' || messageChar == 'K') {
        messageArray[y] = 11;
    } else if (messageChar == 'l' || messageChar == 'L') {
        messageArray[y] = 12;
    } else if (messageChar == 'm' || messageChar == 'M') {
        messageArray[y] = 13;
    } else if (messageChar == 'n' || messageChar == 'N') {
        messageArray[y] = 14;
    } else if (messageChar == 'o' || messageChar == 'O') {
        messageArray[y] = 15;
    } else if (messageChar == 'p' || messageChar == 'P') {
        messageArray[y] = 16;
    } else if (messageChar == 'q' || messageChar == 'Q') {
        messageArray[y] = 17;
    } else if (messageChar == 'r' || messageChar == 'R') {
        messageArray[y] = 18;
    } else if (messageChar == 's' || messageChar == 'S') {
        messageArray[y] = 19;
    } else if (messageChar == 't' || messageChar == 'T') {
        messageArray[y] = 20;
    } else if (messageChar == 'u' || messageChar == 'U') {
        messageArray[y] = 21;
    } else if (messageChar == 'v' || messageChar == 'V') {
        messageArray[y] = 22;
    } else if (messageChar == 'w' || messageChar == 'W') {
        messageArray[y] = 23;
    } else if (messageChar == 'x' || messageChar == 'X') {
        messageArray[y] = 24;
    } else if (messageChar == 'y' || messageChar == 'Y') {
        messageArray[y] = 25;
    } else if (messageChar == 'z' || messageChar == 'Z') {
        messageArray[y] = 26;
    } 
    else if (messageChar == ' ') {
        messageArray[y] = 27;
    } 

    y++;
}

    }
    for(int i = 0; i < messageArray.length; i++){
        System.out.println(messageArray[i]);
        }





}
}
4

5 回答 5

1

你有很多错误。要指出的太多了,如果我用注释显示正确的代码会更简单:

public static void main(String[] args) throws Exception {

    int[] wordArray;
    String messageWord;
    char messageChar;
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter your message: ");
    messageWord = scanner.nextLine(); // read once before entering loop

    while (!messageWord.equals("exit")) { // notice the correct condition

        // these two variables should be reset for each word
        int y = 0;
        // and each messageArray should be of the right size            
        int[] messageArray = new int[messageWord.length()];

        for (int i = 0; i < messageWord.length(); i++) {
            messageChar = messageWord.charAt(i);
            // *** insert all those if conditions here ***
            y++;
        }

        // this goes inside the main loop
        for (int j = 0; j < messageArray.length; j++)
            System.out.print(messageArray[j] + " ");

        // we have to ask for the next word inside the main loop
        System.out.print("\nEnter your message: ");
        messageWord = scanner.nextLine();

    }

}

请注意,要退出循环,最好有一个可以用作条件的特殊字符串 - 我正在使用这个词"exit"

于 2013-09-28T23:02:47.993 回答
0

(或至少“一个”)错误在这一行:

messageWord = scanner.next(message);

您指定message为参数。这似乎是错误的,因为next(String pattern)需要一个必须匹配下一个输入序列的正则表达式。只需调用此方法的无参数版本!

于 2013-09-28T22:47:34.470 回答
0

现在我看到的问题不是你的代码没有给出结果,而是它永远不会结束。它无限运行。

您将要为此重写整个代码。我认为没有任何快速修复可以使这项工作按您的意愿进行。

我是否可以建议研究StringBuilder类来帮助您完成这个项目?

这是一种将字符串用作索引数组而不是一个对象的方法。它可以使您尝试做的事情变得更加容易。

于 2013-09-28T22:50:18.850 回答
0

一方面,while循环甚至在for循环通过messageArray.

于 2013-09-28T22:50:45.143 回答
0

之所以看不到任何内容,是因为您在外部while()循环之外检索了输入,而完全忘记了对此做任何有用的事情。尝试注释掉这一行

String message = scanner.nextLine();

并且您的程序将运行(但仍然存在 ArrayIndexOutOfBoundsException,因此您也需要修复它)。

于 2013-09-28T23:01:29.833 回答