我如何编码以使数组令牌[]不读取空值?代码如下。
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
}
答案 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) {
希望这有帮助