String数组的每个元素都包含空值

String数组的每个元素都包含空值

问题描述:

对不起。我是Java新手。我试图计算文本文件中每个单词的长度,但是当我打印结果时,按长度存储单词的字符串数组中的每个元素都包含一个空值,而且我真的不理解它。String数组的每个元素都包含空值

import java.awt.List; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.util.ArrayList; 
import java.util.Scanner; 
import edu.duke.*; 

public class WordLengths { 

    public static void main(String[] args) { 


     countWordLengths("/Users/lorenzodalberto/Downloads/ProgrammingBreakingCaesarData/smallHamlet.txt"); 

    } 

    public static void countWordLengths(String fileName) { 
     ArrayList<String> myWords = new ArrayList<String>(); 
     String[] wordInd = new String[20]; 
     int[] counts= new int[20]; 

     Scanner sc2 = null; 

     try { 
      sc2 = new Scanner(new File(fileName)); 
     } 
     catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     while (sc2.hasNextLine()) { 
      Scanner s2 = new Scanner(sc2.nextLine()); 
      while (s2.hasNext()) { 
       String word = s2.next(); 
       myWords.add(word); 
      } 
     } 
     System.out.println("all of my words " + myWords); 

     for (String word : myWords) { 
      word = word.toLowerCase(); 
      int length = word.length(); 
      wordInd[length] += " " + word + " "; 
      counts[length] += 1; 
      System.out.println(wordInd[length]); 
     } 

     for (int i = 1; i < counts.length; i++) { 
      int j = counts[i]; 
      if (j > 0) { 
       System.out.println(j + "\t words of length " + i + " " + wordInd[i]); 
      } 
     } 
    } 
} 

,这是输出:

 
all of my words [Laer., My, necessaries, are, embark'd., Farewell., And,, sister,, as, the, winds, give, benefit] 
null laer. 
null my 
null necessaries 
null are 
null embark'd. 
null embark'd. farewell. 
null and, 
null sister, 
null my as 
null are the 
null laer. winds 
null and, give 
null sister, benefit 
2 words of length 2 null my as 
2 words of length 3 null are the 
2 words of length 4 null and, give 
2 words of length 5 null laer. winds 
2 words of length 7 null sister, benefit 
2 words of length 9 null embark'd. farewell. 
1 words of length 11 null necessaries 
+0

对象数组填充null。在使用它之前,您需要将实际的字符串放在wordInd中。 – matt

如果添加一个字符串null,该null被转换成字符串"null"。例如,null + " hi there"给出"null hi there"

所以,如果wordInd[length]是空的,你执行

wordInd[length] += " " + word + " "; 

然后你被串联null为一个字符串,让您开始"null "的字符串。

尝试检查空:

if (wordInd[length]==null) { 
    wordInd[length] = word; 
} else { 
    wordInd[length] += " "+word; 
} 
+0

非常感谢,解决了这个问题!我会投你一票,但我没有声望 – costep

当初始化Java中的数组,数组的每一个空的空间充满取决于类型的默认值。

由于您正在创建字符串数组,因此数组中的每个插槽都将包含一个“空”值。

您的程序正在执行您要求的操作:为找到的每个新单词添加一个空格 - >一个新的字符串 - >另一个空格。

编辑:NVM,你的问题已经被回答:)