请问这个错在哪里?????
char[] letter={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int c = 0;
String b=jTextField2.getText();
char[] a1 = null;
for(int i=0;i<=b.length();i++){
c=b.charAt(i);
a1[i]=letter[c];
}
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 49
at javaapplication3.NewJFrame.jButton1ActionPerformed(NewJFrame.java:161)
------解决方案--------------------------------------------------------
char[] a1 = null;没有初始化分配长度,直接使用a1[i]肯定会报错..
修改为:char[] a1 = new char[26]; //长度根据你自己的需要设定
------解决方案--------------------------------------------------------
补充1下。
c=b.charAt(i);
a1[i]=letter[c];
这2行代码逻辑上就有错误。
比如说:
String b = "a";
那么你这样获取c的值会为:
c = 96;
那么letter[c]就会抛出数组越界异常了。
------解决方案--------------------------------------------------------
这里有几处错误。
①、char[] a1 = null;
a1未初始化,没有分配内存空间,所以a1[i]=letter[c];就报错了。
应该改为char[] a1 = new char[b.length()];
②、b.charAt(i);返回的应该是char类型,你将char直接转为int的后果是得到的是ascii码值。比如
char c = '1';
int i = c;
此时i = 49,而不是1。
③、for(int i=0;i<=b.length();i++){循环条件有问题。因该是i<b.length();数组下标从0开始。
- Java code
char[] letter = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; String b=jTextField2.getText(); int len = b.length(); char[] a1 = new char[len]; for (int i = 0; i < len; i++) { char c = b.charAt(i); int index = Integer.parseInt(Character.toString(c)); a1[i] = letter[index]; }