Java 拆分字符串时避免数组索引越界异常
我试图读取一个文件,并逐行拆分字符串行。这是文件中的示例字符串Java 拆分字符串时避免数组索引越界异常,java,string,split,substring,Java,String,Split,Substring,我试图读取一个文件,并逐行拆分字符串行。这是文件中的示例字符串 Decorative Platters--------Home & Kitchen->Home & Décor->Home Décor Accents Hookah--------Watches & Jewellery->Fashion Jewellery->Bangles hookah-------- 在这种情况下,第三行在点之后没有任何内容 private static vo
Decorative Platters--------Home & Kitchen->Home & Décor->Home Décor Accents
Hookah--------Watches & Jewellery->Fashion Jewellery->Bangles
hookah--------
在这种情况下,第三行在点之后没有任何内容
private static void getCategoriesFromFileAndMAtch() {
try {
BufferedReader br=new BufferedReader(new FileReader("mapping_log"));
String eachLine;
while((eachLine = br.readLine()) != null)
{
String input1, input2, tempString;
input1=eachLine.split("--------")[0];
tempString=eachLine.split("--------")[1];
if(!(eachLine.split("--------")[1].isEmpty()))
{
tempString=eachLine.split("--------")[1].split("::=>")[0];
System.out.println(input1+" "+tempString);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
由于[1]的值为空,我得到异常,程序停止。我怎样才能避免呢?我正在检查它是否在if循环中为空。这还不够吗?当您编写以下行时,您假设元素存在,但在您的示例中它根本不存在,并且
if
语句本身会出现异常
if(!(eachLine.split("--------")[1].isEmpty()))
相反,请检查split()
的返回值的长度
当您编写以下行时,您假设元素存在,但在您的示例中它根本不存在,并且
if
语句本身会出现异常
if(!(eachLine.split("--------")[1].isEmpty()))
相反,请检查split()
的返回值的长度
当您编写以下行时,您假设元素存在,但在您的示例中它根本不存在,并且
if
语句本身会出现异常
if(!(eachLine.split("--------")[1].isEmpty()))
相反,请检查split()
的返回值的长度
当您编写以下行时,您假设元素存在,但在您的示例中它根本不存在,并且
if
语句本身会出现异常
if(!(eachLine.split("--------")[1].isEmpty()))
相反,请检查split()
的返回值的长度
建议:
String input1, input2, tempString;
String [] parts = eachLine.split("--------");
input1 = parts[0];
if (parts.length > 1) {
input2 = parts[0];
tempString=input2.split("::=>")[0];
System.out.println(input1 + " " + tempString);
}
建议:
String input1, input2, tempString;
String [] parts = eachLine.split("--------");
input1 = parts[0];
if (parts.length > 1) {
input2 = parts[0];
tempString=input2.split("::=>")[0];
System.out.println(input1 + " " + tempString);
}
建议:
String input1, input2, tempString;
String [] parts = eachLine.split("--------");
input1 = parts[0];
if (parts.length > 1) {
input2 = parts[0];
tempString=input2.split("::=>")[0];
System.out.println(input1 + " " + tempString);
}
建议:
String input1, input2, tempString;
String [] parts = eachLine.split("--------");
input1 = parts[0];
if (parts.length > 1) {
input2 = parts[0];
tempString=input2.split("::=>")[0];
System.out.println(input1 + " " + tempString);
}
对于第三种情况,
eachLine.split(“----------”)
将返回一个长度为1的数组,因此当您使用索引1访问该数组时,即
eachLine.split(“----------”)[1]
它给出了一个异常。您可以首先检查split函数返回的数组是否大于1
if(eachLine.split("--------").length > 1 && !(eachLine.split("--------")[1].isEmpty()))
{
tempString=eachLine.split("--------")[1].split("::=>")[0];
System.out.println(input1+" "+tempString);
}
对于第三种情况,
eachLine.split(“----------”)
将返回一个长度为1的数组,因此当您使用索引1访问该数组时,即
eachLine.split(“----------”)[1]
它给出了一个异常。您可以首先检查split函数返回的数组是否大于1
if(eachLine.split("--------").length > 1 && !(eachLine.split("--------")[1].isEmpty()))
{
tempString=eachLine.split("--------")[1].split("::=>")[0];
System.out.println(input1+" "+tempString);
}
对于第三种情况,
eachLine.split(“----------”)
将返回一个长度为1的数组,因此当您使用索引1访问该数组时,即
eachLine.split(“----------”)[1]
它给出了一个异常。您可以首先检查split函数返回的数组是否大于1
if(eachLine.split("--------").length > 1 && !(eachLine.split("--------")[1].isEmpty()))
{
tempString=eachLine.split("--------")[1].split("::=>")[0];
System.out.println(input1+" "+tempString);
}
对于第三种情况,
eachLine.split(“----------”)
将返回一个长度为1的数组,因此当您使用索引1访问该数组时,即
eachLine.split(“----------”)[1]
它给出了一个异常。您可以首先检查split函数返回的数组是否大于1
if(eachLine.split("--------").length > 1 && !(eachLine.split("--------")[1].isEmpty()))
{
tempString=eachLine.split("--------")[1].split("::=>")[0];
System.out.println(input1+" "+tempString);
}
我想您需要
if(eachLine.split(“----------”).length>1)
那里--length
是数组的属性,而不是方法。(修正太小,无法提交编辑。)@Ben,谢谢!我修复了它。我想您需要如果(eachLine.split(“----------”).length>1)
那里--length
是数组的属性,而不是方法。(修正太小,无法提交编辑。)@Ben,谢谢!我修复了它。我想您需要如果(eachLine.split(“----------”).length>1)
那里--length
是数组的属性,而不是方法。(修正太小,无法提交编辑。)@Ben,谢谢!我修复了它。我想您需要如果(eachLine.split(“----------”).length>1)
那里--length
是数组的属性,而不是方法。(修正太小,无法提交编辑。)@Ben,谢谢!我修好了。