Java 数组索引越界异常在下面的程序中如何处理?

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 =

程序抛出异常,有人能告诉我怎么做吗 来处理它。 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 = 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());
   }