A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王东 中级黑马   /  2013-11-11 16:36  /  849 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Shuzu {

  2.         public static void main(String[] args) {
  3.                 System.out.println("请输入数据 , 以over结束,请输入少于1024个数组");

  4.                 String str[] = Num();

  5.                 Copy(str, 0, 3);

  6.                 Nixu(str);
  7.                
  8.                 Array(str);

  9.         }

  10.         public static String[] Copy(String strr[], int start, int end) {
  11.                 String copystr[] = new String[end - start];

  12.                 for (int i = 0; i < end - start; i++) {
  13.                         copystr[i] = strr[start];

  14.                 }

  15.                 return copystr;

  16.         }

  17.         public static String[] Num() {
  18.                 String strr1[] = new String[1024];
  19.                 int i = 0;

  20.                 while (true) {

  21.                         Scanner sc = new Scanner(System.in);
  22.                         String str = sc.next();

  23.                         if (str.equals("over")) {
  24.                                 sc.close();
  25.                                 break;
  26.                         } else {
  27.                                 strr1[i] = str;
  28.                                 i++;
  29.                         }
  30.                 }

  31.                 String strr[] = new String[i];

  32.                 for (int j = 0; j < i; j++) {
  33.                         strr[j] = strr1[i];
  34.                 }

  35.                 return strr;

  36.         }

  37.         public static String[] Nixu(String str[]) {
  38.                 String[] strr = new String[str.length];

  39.                 for (int i = 0; i < str.length; i++)
  40.                         strr[i] = str[str.length - 1 - i];

  41.                 return strr;

  42.         }

  43.         public static String[] Array(String str[]) {
  44.                 String strr = "";
  45.                 for (int i = 1; i < str.length; i++) {
  46.                         if (str[i - 1].compareTo(str[i]) > 0) {
  47.                                 strr = str[i];
  48.                                 str[i] = str[i - 1];
  49.                                 str[i - 1] = strr;
  50.                         }
  51.                 }

  52.                 return str;
  53.         }
  54. }
复制代码
空指针异常,请问为什么??

2 个回复

倒序浏览
本帖最后由 文涛 于 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 17:08
楼主,你的这句话有问题String strr[] = new String;
  数组的初始化的时候,方括号里面要么没有数字,直 ...

谢谢你,找到错误了,是20行和49行的变量写错了,都改成i就没事了,谢谢你啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马