0

我需要如何编码以使数组 token[] 不会读取空值?代码如下。

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
    }
4

3 回答 3

0

免责声明:我不太确定您的问题是什么,也许您应该添加一些细节。

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

返回

通过围绕给定正则表达式的匹配拆分此字符串计算的字符串数组

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

所以 split 方法总是返回一个 String 数组。如果传递的正则表达式不匹配,它将返回一个只有一个元素的字符串数组:原始字符串。

这一行:

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

应该变成这样:

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

希望这可以帮助

于 2013-03-29T18:10:58.290 回答
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);

这当然是伪代码。

于 2013-03-29T18:01:16.137 回答
0

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

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

  // use the array
于 2013-03-29T17:58:02.577 回答