import java.util.*;
public class Words_Array {
public int numberWords(String str) { //to store the number of words in the given sentence
int l = str.length();
int w = 0 ;
for(int i = 0 ; i < l ; i++)
if(str.charAt(i) == ' ')
w++;
return (w+1);
}
public String[] storeWords(String str , int w) { //to create an array which contains the words of the sentence
int l = str.length();
String arr[] = new String[w];
w = 0 ;
int i = 0;
do {
if(str.charAt(i) != ' ')
arr[w] = arr[w] + str.charAt(i);
else
w++;
i++;
}
while(i < l && w < arr.length);
return arr;
}
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
Words_Array obj = new Words_Array();
System.out.print("Enter The Sentence : ");
String sent = in.nextLine();
int w = obj.numberWords(sent);
String Words[] = obj.storeWords(sent, w);
for(int i = 0 ; i < w ; i++)
System.out.println(Words[i]);
}
}
**如果我的句子是:我是Saikat Das 然后输出为:
nullI
nullam
nullSaikat
nullDas**
如何解决此逻辑错误
答案 0 :(得分:2)
看看这一行:arr[w] = arr[w] + str.charAt(i);
,想一想如果arr[w]
是null
会发生什么-您将基本上生成一个值null + charAt(i)
,该值会导致字符串"nullX"
(其中X
是该字符)。
添加下一个字符(例如'Y'
)后,您基本上会执行类似arr[w] = "nullX" + 'Y'
的操作,从而获得新值"nullXY"
。
要摆脱这种情况,您需要使用默认值(null
)以外的其他值初始化创建的数组:
String arr[] = new String[w];
Arrays.fill( arr, "" ); //set all elements to contain an empty string
添加字符时也可以处理null
情况:
arr[w] = (arr[w] == null ? "" : arr[w]) + str.charAt(i);