控制台错误:当我输入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));
}
}
}
}
}
答案 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)
检查一下。