为什么我的代码出现此错误

时间:2017-07-18 02:37:09

标签: java

控制台错误:当我输入1个字母时

  

线程“main”中的异常java.lang.StringIndexOutOfBoundsException:   字符串索引超出范围:java.lang.String.charAt为1(未知   来自javaB.Cipher.main(Cipher.java:17)

package javaB;
import java.util.*;

public class Cipher {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
        Scanner reader=new Scanner(System.in);
        String key1="abcdefghijklmnopqrstuvwkyz ";
        String key2="QWERTYUIOPASDFGHJKLZXCVBNM_";
        System.out.println("System launched----enter the code----");
        String aw=reader.nextLine();

        for(int ii=0;ii<=aw.length();ii++)
        {
            for(int i=0;i<=27;i++)
            {
                if(aw.charAt(i)==key1.charAt(i))
                {
                    System.out.println(key2.charAt(i));
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在您的for个循环中,您正在使用<=运算符,这意味着您访问key..数组末尾之后的索引。使用<运算符。换句话说,从0到27(含)有28个数字,你需要排除第27个索引。

答案 1 :(得分:0)

当i = 1时,由于java为零索引,aw.charAt(1)尝试从aw获取第二个char。因为aw =&#34; Q&#34;并且它具有单个字符,以下代码行将抛出StringIndexOutOfBoundsException

aw.charAt(i)==key1.charAt(i)

看起来你想编写代码来比较aw.charAt(ii)和key1.charAt(i)

aw.charAt(ii) == key1.charAt(i)

检查一下。