Java 数组索引越界异常在下面的程序中如何处理?
程序抛出异常,有人能告诉我怎么做吗 来处理它。 java.lang.ArrayIndexOutOfBoundsException:0 字符串的出现次数为0请检查Java 数组索引越界异常在下面的程序中如何处理?,java,Java,程序抛出异常,有人能告诉我怎么做吗 来处理它。 java.lang.ArrayIndexOutOfBoundsException:0 字符串的出现次数为0请检查 import java.util.*; import java.io.*; public class search { public static void main(String[] args) { // TODO Auto-generated method stub Scanner x =
import java.util.*;
import java.io.*;
public class search {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner x = null;
String k;
int c= 0;
try{
x =new Scanner( new BufferedReader (new FileReader("hh.txt")));
while(x.hasNext()){
k = x.next();
if(k.equals(args[1]))
{
c++;
}
}
}catch(Exception ex){
System.out.println(ex.toString());
}
System.out.println("The number of occurrence of String is "+c);
}
}
在使用args[1]之前,如下面所示
if ( args[1] != null ) {
}
简单地捕获这样的异常是一件非常糟糕的事情
if ( args[1] != null ) {
if ( k.equals(args[1]) ) {
c++;
}
}
出现异常表示出现了问题,发生的默认操作是使用异常消息和堆栈跟踪终止线程,堆栈跟踪指示异常发生的位置
如果捕获异常并继续执行此处的操作,那么在程序的其余部分可能会发生不好和意外的事情。因此,不要捕获您不期望的异常
相反,捕获您认为可能发生的特定异常(如ArrayIndexOutOfBoundsException),并采取适当的操作。或者进行测试以避免出现异常,比如检查是否传入了适当的参数。永远不要捕获意外异常并继续执行可能的重复原因是您运行程序时没有任何参数,因此调用args[1]会导致异常。不要捕获异常-仅打印它会丢失有价值的信息,例如发生异常的行。请使用
ex.printStackTrace()
而不是System.out.println(例如toString())
来获取正确的异常我怀疑您想使用if(k.equals(args[0])
而不是if(k.equals(args[1])
。如果args
大小为1怎么办?那么他可能不需要做任何事情,或者他可以通知用户输入参数
} catch(Exception ex){
System.out.println(ex.toString());
}