黑马程序员技术交流社区
标题:
请教大牛,为什么异常,谢谢谢谢
[打印本页]
作者:
王东
时间:
2013-11-11 16:36
标题:
请教大牛,为什么异常,谢谢谢谢
public class Shuzu {
public static void main(String[] args) {
System.out.println("请输入数据 , 以over结束,请输入少于1024个数组");
String str[] = Num();
Copy(str, 0, 3);
Nixu(str);
Array(str);
}
public static String[] Copy(String strr[], int start, int end) {
String copystr[] = new String[end - start];
for (int i = 0; i < end - start; i++) {
copystr[i] = strr[start];
}
return copystr;
}
public static String[] Num() {
String strr1[] = new String[1024];
int i = 0;
while (true) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
if (str.equals("over")) {
sc.close();
break;
} else {
strr1[i] = str;
i++;
}
}
String strr[] = new String[i];
for (int j = 0; j < i; j++) {
strr[j] = strr1[i];
}
return strr;
}
public static String[] Nixu(String str[]) {
String[] strr = new String[str.length];
for (int i = 0; i < str.length; i++)
strr[i] = str[str.length - 1 - i];
return strr;
}
public static String[] Array(String str[]) {
String strr = "";
for (int i = 1; i < str.length; i++) {
if (str[i - 1].compareTo(str[i]) > 0) {
strr = str[i];
str[i] = str[i - 1];
str[i - 1] = strr;
}
}
return str;
}
}
复制代码
空指针异常,请问为什么??
作者:
文涛
时间:
2013-11-11 17:08
本帖最后由 文涛 于 2013-11-11 17:10 编辑
楼主,你的这句话有问题String strr[] = new String
;
数组的初始化的时候,方括号里面要么没有数字,直接在后面写上元素,例如String strr[] = new String[]
{"a","b"};这样会自动根据元素产生对应大小的数组。要么就使用常量数字进行初始化,比如String strr[] = new String[2];这样就会生成2个大小的数组。
所以,你这里使用变量i进行初始化时错误的,由于你的i定义为0,那么他会自动生成一个0空间的数组,也就是说,strr就没有指向任何字符串数组,自然也就指针异常了。换句话说,必须在初始化的时候,就给定数组确定的大小。
作者:
王东
时间:
2013-11-11 18:46
文涛 发表于 2013-11-11 17:08
楼主,你的这句话有问题String strr[] = new String;
数组的初始化的时候,方括号里面要么没有数字,直 ...
谢谢你,找到错误了,是20行和49行的变量写错了,都改成i就没事了,谢谢你啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2