控制台错误:输入一个字母时
线程“主”java.lang.StringIndexOutOfBoundsException中的异常:超出范围的字符串索引:1在javaB.Cipher.main(Cipher.java:17)处的java.lang.String.charAt(未知源)处
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));
}
}
}
}
}
发布于 2017-07-18 03:00:27
当i=1时,由于java为零,基于索引的aw.charAt(1)试图从aw获取第二个字符。作为aw ="Q“并且它只有一个字符,下面的代码行将抛出StringIndexOutOfBoundsException
aw.charAt(i)==key1.charAt(i)
看来您想编写代码来比较aw.charAt(ii)和key1.charAt(i)
aw.charAt(ii) == key1.charAt(i)
看看这个。
发布于 2017-07-18 02:45:23
在两个for
循环中,您都使用<=
操作符,这意味着您访问key..
数组结束后的索引。使用<
操作符。换句话说,从0到27包括28个数字,你需要排除第27指数。
https://stackoverflow.com/questions/45156568
复制相似问题