Java程序中的二维数组
我的程序应该从用户那里获取一个短语,然后向用户返回他们所输入短语的加密代码(ROT13或ATBASH)。我的代码编译了所有内容,并允许用户输入所需的内容,但当他们输入要加密的短语时,什么也没有发生。。就像新的加密代码没有出现一样,我不知道它出了什么问题! 请帮忙!谢谢大家!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
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(x for(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()
?