我正在尝试运行此代码,但我不断收到越界错误。这只是父类(super class)“Simpler”的子类。用户输入一个字符串,然后该字符串被分解为一个字符数组。数组不应小于字符串,但我收到此错误。你能告诉我我做错了什么吗?谢谢!
import java.util.*;
public class Encrypt extends Simpler
{
public void encryption()
{
boolean loop = true;
while(loop==true)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter the phrase you'd like to encrypt: ");
String inPhrase = scan.nextLine();
char[] chars = inPhrase.toCharArray();
char tempArray[] = new char[chars.length+1];
tempArray = chars;
chars = new char[tempArray.length];
for (int i = inPhrase.length(); i<inPhrase.length(); i--)
{
if(chars[i]=='a')
{
chars[i]='1';
}
else if(chars[i]=='b')
{
chars[i]='2';
}
else if(chars[i]=='c')
{
chars[i]='3';
}
else if(chars[i]=='d')
{
chars[i]='4';
}
else if(chars[i]=='z')//I skipped some lines here for convienence
{
chars[i]='{';
}
else if(chars[i]==' ')
{
chars[i]='}';
}
}
String outPhrase = new String(chars);
System.out.println(outPhrase);
}
}
}
最佳答案
我认为你的 for
循环语句应该如下所示:
for (int i = 0; i < inPhrase.length(); i++)
如果你正在计数,就像这样:
for (int i = inPhrase.length() - 1; i >= 0; i--)
如果您正在倒计时。
更新
回想起来,我认为事情的意义远不止于此。 我认为你的代码需要重写:
String inPhrase = scan.nextLine();
char[] chars = inPhrase.toCharArray();
char tempArray[] = new char[chars.length()];
for (int i = 0; i < chars.length(); i++)
{
if(chars[i]=='a')
{
tempArray[i]='1';
}
.
.
.
.
}
String outPhrase = new String(tempArray);
关于java - Java中数组越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21655612/