如何从输出中删除“空”字?

时间:2019-11-20 15:18:02

标签: java string

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**

如何解决此逻辑错误

1 个答案:

答案 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);