我正在尝试运行此代码,但我不断遇到越界错误。这只是超类“Simpler”的子类。用户输入字符串然后将字符串分解为char数组。数组不应小于字符串但我收到此错误。你能告诉我我做错了什么吗?谢谢!
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);
}
}
}
答案 0 :(得分:3)
我认为你的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);
答案 1 :(得分:0)
在for循环中没有停止条件,在这一行:
for (int i = inPhrase.length(); i<inPhrase.length(); i--)
i
获取1, 0, -1, ...
并且如果-1
不会抛出越界异常,则不会停止
答案 2 :(得分:0)
在for循环中,只需将条件从i < inPhrase.length()
更改为i >= 0
即可完成此任务。
答案 3 :(得分:0)
第一件事:
for (int i = inPhrase.length(); i<inPhrase.length(); i--)
你永远不会进入你的循环,因为你指定了i = n&amp;进入条件是i&lt; Ñ
应该是
for (int i = inPhrase.length()-1; i>=0; i--)
现在,这也会删除你的arrayoutofbound异常,因为之前,你试图访问chars [n],它实际上是该数组的第n + 1个字符。