Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序中的二维数组_Java_Arrays_String_Multidimensional Array - Fatal编程技术网

Java程序中的二维数组

Java程序中的二维数组,java,arrays,string,multidimensional-array,Java,Arrays,String,Multidimensional Array,我的程序应该从用户那里获取一个短语,然后向用户返回他们所输入短语的加密代码(ROT13或ATBASH)。我的代码编译了所有内容,并允许用户输入所需的内容,但当他们输入要加密的短语时,什么也没有发生。。就像新的加密代码没有出现一样,我不知道它出了什么问题! 请帮忙!谢谢大家! import java.io.*; public class J4_1_EncryptionVer4 { public static void main (String [] args) throws IOExc

我的程序应该从用户那里获取一个短语,然后向用户返回他们所输入短语的加密代码(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
import java.io.*;
公共类J4_1_加密版本4
{
公共静态void main(字符串[]args)引发IOException
{
BufferedReader myInput=new BufferedReader(new InputStreamReader(System.in));//BufferedReader读取用户输入
//字符串数组letterA[]已初始化
字符串[][]字母A=新字符串[][]{
{“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(“为ROT13输入'1'或为ATBASH输入'2');//要求用户选择方法
String numA=myInput.readLine();//读取用户输入并将其分配给字符串
int num=Integer.parseInt(numA);//将字符串转换为整数
int a=0;//声明int a
如果(num==1){//如果用户输入1
a=1;//将a设置为1
}
if(num==2){//end if//if用户输入2
a=2;//将a设置为2
}//如果结束
System.out.println(a);
系统输出打印项数(num);
System.out.println(“请输入短语:”;//要求用户输入短语
String message=myInput.readLine();//读取用户输入并将其分配给字符串
int x=0;//声明int var x
System.out.println(“您的加密代码是:”;//打印场景
while(xfor(int i=0;i这不起作用,因为
letta.length
是3,所以您的
for
循环只运行3次迭代,而不是26次。

我认为您应该将for循环更改为

    for (int i= 0; i < letterA[0].length ; i++ ) {
           if (letter.equals(letterA[0][i]) {
               System.out.print(letterA[a][i]);
               break;              
           }
           else {
                // .........,.......
           }
    }
for(int i=0;i
首先使用第一个数组作为基础。比较字母,然后如果它们相等,则获取加密中使用的该字母的索引


我现在使用的是该死的ryt电话,所以我没有真正编译您的代码

我强烈建议您学习使用调试器。与letterA[0]不同。长度,letterA[1]。长度和letterA[2].长度都是26嗨!谢谢你的回答…但是我对你说的有点困惑mean@MaddieLetterA是一个二维数组,在LetterA[0]中有a-Z,在LetterA[1]中有N-M,在LetterA[2]中有Z-a.所以字母a的长度是3,但在你的代码中,我想你希望它是26,这是第二维数组的长度。你的for循环将迭代3次-一次使用
I=0
,一次使用
I=1
,一次使用
I=2
。因此,根据
a
的值,你将只比较
letter
agA、B和C;或N、O和P;或Z、Y和X。其他字母不会发生任何变化。@DavidWallace因此,我的目标是让循环在输入的短语长度
message.length()