java - Java 程序中的二维数组

标签 java arrays string multidimensional-array

我的程序应该从用户那里获取一个短语,然后将他们输入的短语的选择的加密代码(ROT13 或 ATBASH)返回给用户。我的代码编译了所有内容,并让用户输入所需的内容,但是当他们输入要加密的短语时,什么也没有发生..就像新的加密代码没有显示一样,我不知道它出了什么问题! 请帮忙!谢谢!

   import java.io.*;

public class J4_1_EncryptionVer4
{
  public static void main (String [] args) throws IOException
  {
    BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));//BufferedReader reads user input

    //String array letterA[] is initialized
    String [][] letterA = new String [][]{
    {"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"},
    {"N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M"},
    {"Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","J","I","H","G","F","E","D","C","B","A"},
    };

    System.out.println ("Enter '1' for ROT13 or '2' for ATBASH");//asks user to choose method
    String numA = myInput.readLine();//reads user input and assigns it to string
    int num = Integer.parseInt (numA);//converts string to integer
    int a = 0;//int a is declared

    if (num == 1){//if user enters 1
          a = 1;//set a to 1
    }
    if (num == 2) {//end if//if user enters 2
          a = 2;//set a to 2
        }//end if
    System.out.println ( a);
    System.out.println(num);

    System.out.println ("Please enter a phrase: ");//asks user to enter phrase
    String message = myInput.readLine();//reads user input and assigns it to string

    int x = 0; //declares int var x

    System.out.println ("Your Encrypted code is: ");//prints out scentence


    while (x < message.length())//while loop will run while x is less that the phrase length          
    {
      String text = message.toUpperCase();//converts user input to upper case
      String letter = Character.toString(text.charAt(x));//extracts character from string and assigns it to another string letter

      x++;//increments x by 1 each time

      for(int i=0; i<letterA.length; i++)//for loop declares int i = 0, will run while i is less than the the length of the array letterA, and i will increment by 1 each time
      {
        if(letter.equals(letterA[a][i]))//if the letter is equal to letterA[i]
        {
          System.out.print (letterA[a][i]);//print out the corresponding letter

          break;//breaks from loop

        }//end if

        else if (letter.equals(" "))//else id the letter is equal to a space
        {
          System.out.print(" ");//prints out space
          break;//breaks from loop
        }//end else if        
      }//end for loop
    }//end while loop
  }//end main
}//end class

最佳答案

这不起作用,因为 letterA.length 为 3,因此您的 for 循环仅运行 3 次迭代,而不是 26 次。

关于java - Java 程序中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18795717/

相关文章:

python - 百分位计算 : Can I convert this for loop to a vector operation?

统计评论字符数的C程序

c - 在不检查空字符的情况下反转无界字符串

java - 删除 openjpa 为 sybase 生成的 sql 中的引号

java - OSGi `uses` 约束违规,即使存在兼容的导出器

javascript - 对象数组的排序不适用于 Array.sort() 方法

javascript - 计算子串最快的方法是什么

java - 如何从数组列表中的字符串中删除单词?

java - 使用 Logback 仅记录前 N 行

java - 如何从字符串中删除一些字符