试图分别获取每一行的字符并获得NullPointerException

时间:2015-04-16 10:53:45

标签: java arrays string

尝试分别获取每一行的字符,但无论我尝试说什么 显示java.lang.NullPointerException。

txt文件中的字符串有一些空格。(“”)

while ((line = scn.readLine()) != null){
    line2[a] = line;
    for (int l = 0; l < x; l++){
        chars[a][l] = new Character(line.charAt(l));
    }
}

txt文件是:

  ###############################
  #      #    #      #          #
  # #### # #### #### # ######## #
  # #    # #       # #        # #
  # # #### # ##### # ######## # #
  # # #    #   #   #        # # #
  # # # ###### # #### ##### # # #
  # # # #   #  #    # #   # # # #
  # #   # # # ##### # # # #   # #
  # ### # # # # * # # # # # ### #
  #   # # # # ## ## # # # # #   #
  ### # # # #  # #  # # # # # ###
  #   # # # ## # # ## # # # #   #
  # ### # #  # # # #  # # # # # #
  # #   # #### # # # ## # #   # #
  # # # #      # #####  ####### #
  # # #   ######                #
  # #######    ##################
  #                             #
  ##############-################

我修好了,但结果仍然不合适。 多数民众赞成我得到的:

 ####################
 #          #       #
 # ######## # ##### #
 # #      #   #   # #
 # # #### ##### ### #
 # # #            # #
 #   # ########## # #
 ##### #          # #
 #     # ####### ## #
 # #####       # #  #
 # #   ####### # #  #
 # # # #     ### #  # 
 ### #   ###     #  #
 #   ##### ######## #
 # # #   #*       # -
 # # # # # ###### # #
 # #   # ###    # # #
 # #####     #### # #
 #     #######  # # #
 #####         ## # #

2 个答案:

答案 0 :(得分:1)

你的while循环在到达文件末尾时没有测试,所以line变为null:

while((line= scn.readLine())!=null){
  line2[a]=line;
  for(int l=0;l<line.length;l++){
  chars[a][l]=new Character(line.charAt(l));
  }
}

请不要提出有关NullPointerExceptions为何与特定代码一起发生的问题或鼓励问题。有成千上万的这些工件污染了stackoverflow,它们几乎没有任何价值。

答案 1 :(得分:1)

以下是可能导致来自给定代码段的NullPointer的事情:

  1. scn未初始化 - 请确保您已完成此操作。
  2. line2未初始化
  3. chars[a]未初始化。 尝试修复这些,你应该好好去。