wang2046783134
2017-02-04 10:29
采纳率: 100%
浏览 1.1k
已采纳

java 很奇怪的问题,包括数组和字符串转换成数值的问题

直接上问题:

图片说明

  • 第一个问题:
 String[][] temp = null;
 temp[i][j] = one[j];
 ...

这样使用后报空指针问题?又是数组初始化问题?何解?
改成这样后还是不行,如下

 String[][] temp = new String[100][];

然后我改成这样:

 String[][] temp = new String[100][13];
 ...

问题消失,这是为什么?


  • 第二个问题: 出现 > java.lang.NumberFormatException: For input string: "12"

这个问题是格式转换出错,字符串不是数字?
然后又修改:
图片说明

报错:
图片说明

排除了字符串中混有空格,上边输出的是读取的字符串,然后每行分割后存入one数组,到这步出现问题。。。

网上找了很多,没有结果,始终不知道自己错在哪里,望前辈解答,感激不尽

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 战在春秋 2017-02-04 13:03
    已采纳

    第一个问题,二维数组声明时如果想省略第二维的大小是可以的,但必须能通过初始化语句确定第二维大小。
    String[][] array = new String[3][]{
    {"1","2"},
    {"3","4"},
    {"5","6"}
    };

    或者:
    Strin array[][] = new String[3][];
    array[0] = new String[3];
    array[1] = new String[2];
    array[2] = new String[5];

    第二个问题,你分割后取得的子字符串不全是数字啊!象shipno1什么的,

    已采纳该答案
    打赏 评论
  • roc_tootwo 2017-02-04 15:31

    数组是定长的,如果你想可变,你可以用LIst

    打赏 评论
  • gelangqing 2017-02-06 10:23

    第一个问题:
    String[][] temp = null;数组声明时temp初始化为空,下面这条 temp[i][j] = one[j];如果不报空那才叫怪事。
    String[][] temp = new String[100][];一维初始化了,二维呢?你没有手动初始化,java怎么知道大小,java自动初始化为null,所以temp[i]为空
    String[][] temp = new String[100][13];手动初始化数组,数组大小确定了,所以数组内容为空,不会报空指针
    第二个问题:
    错误信息是unknown source ,所以不是字符串格式的问题。你可以再测试一下,应该是没有问题的

    打赏 评论
  • wang2046783134 2017-02-07 06:18

    图片说明

    调试了一下,这是为什么,什么原因我没有注意到?还是有什么知识我没有了解到?

    打赏 评论
  • wang2046783134 2017-02-07 11:36

    所有的问题神奇般的消失了

    string[][] temp = null;
    temp = new String[getdata.size()][one.length];
    

    先初始化为null,后面再new内存,解决了

    后面的parseInt问题,不知道为什么消失了。。。无语,先往后做,以后有空在看是什么问题

    打赏 评论

相关推荐 更多相似问题