不要接受Null值存储到数组中

时间:2013-03-29 17:51:47

标签: java arrays null

我如何编码以使数组令牌[]不读取空值?代码如下。

String[] token = new String[0];
String opcode;
String strLine="";
String str="";
    try{
        // Open and read the file
        FileInputStream fstream = new FileInputStream("a.txt");

        BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

        //Read file line by line and storing data in the form of tokens
        if((strLine = br.readLine()) != null){

                token = strLine.split(" |,");//// split w.r.t spaces and ,  

  // what do I need to code, so that token[] doesnt take null values

            }
            }
        in.close();//Close the input stream
    }

3 个答案:

答案 0 :(得分:0)

是的,您可以将null值设置为数组元素。如果您希望令牌阻止null值,那么您应该在分配之前先检查它。但是在您的代码中,token数组只接受索引0处的一个元素。如果需要设置许多元素,请考虑使用List。而你所分配的内容只是被split返回的另一个数组覆盖。

String[] token = strLine.split(" |,");
if(token!= null && token.lingth >0){

  // use the array

答案 1 :(得分:0)

面向对象的方法是创建一个封装token数组的新类。为此类提供设置和获取元素的方法。如果传入null,则set方法将抛出异常。

public void setElement(int index, String element) {
    if (element == null)
        throw new IllegalArgumentException();
    //...
}

在您的情况下,由于您没有创建token数组,因此您需要从中填充新类:

for each t in token
   myEncapsulation.setElement(loopCount, t);

这当然是伪代码。

答案 2 :(得分:0)

<强>声明: 我不确定你的问题是什么,也许你应该添加一些细节。

无论如何,从split方法的返回部分javadoc:

  

<强>返回

     
    

通过将此字符串拆分为给定正则表达式

的匹配项而计算的字符串数组   

这是一个链接:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String,int)

因此split方法总是返回一个String数组。如果传递的regexp不匹配,它将返回一个只包含一个元素的String数组:原始字符串。

这一行:

if(strLine.split(" |,")!=null){

应该是这样的:

String[] splittedStrLine = strLine.split(" |,");
if(splittedStrLine.length > 1) {

希望这有帮助