java - Java中数组越界?

标签 java indexoutofboundsexception

我正在尝试运行此代码,但我不断收到越界错误。这只是父类(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/

相关文章:

java - 以 HH :MM (Not time) 的形式存储数值

java - java.lang.ArrayIndexOutOfBoundsException 的原因

java - 8 连通边界填充中的坐标超出范围

java - 数组越界 [ArrayList 的冒泡选择]

Netty:奇怪的 IndexOutOfBoundsException:readerIndex + 长度超过 writerIndex

java - 根据姓氏的字母顺序对用户输入的姓名进行排序

java - Spring 存储库和 DATA_FORMAT 与 nativeQuery=false

java - Java中获取类的字段名

java - Java 8 列表中 2 个字符串的每个组合

java - 如何抑制某些 Maven 日志但保留其他输出?