Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
继续获取java.lang.ArrayIndexOutOfBoundsException,但无法确定原因_Java_Arrays_Exception_Indexing - Fatal编程技术网

继续获取java.lang.ArrayIndexOutOfBoundsException,但无法确定原因

继续获取java.lang.ArrayIndexOutOfBoundsException,但无法确定原因,java,arrays,exception,indexing,Java,Arrays,Exception,Indexing,处理一个程序,该程序将从文件中读取输入(使用独立性声明作为测试),并将整数、字符、字符串等的数量写入另一个新文件。但是我遇到了一个问题,数组索引超出了范围。现在我已经检查了我的循环十几次了,但是我不知道是什么导致了这个问题。提前感谢您的帮助=] import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.

处理一个程序,该程序将从文件中读取输入(使用独立性声明作为测试),并将整数、字符、字符串等的数量写入另一个新文件。但是我遇到了一个问题,数组索引超出了范围。现在我已经检查了我的循环十几次了,但是我不知道是什么导致了这个问题。提前感谢您的帮助=]

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class P5 {

    static String arrayString[] = new String[100];
    static int numberLines = 0;
    static int numberWords = 0;
    static int numberChars = 0;
    static int numberUpper = 0;
    static int numberLower = 0;
    static int numberDigits = 0;
    static int numSpaces = 0;
    static int numberTabs = 0;
    static int numberSpecial = 0;


    private static void readFile(String inputFile) {    
        try{

            Scanner fileScan = new Scanner(new File("Declaration.txt"));

            while(fileScan.hasNext()){

                arrayString[numberWords] = fileScan.next();
                numberWords++;
            }

            while(fileScan.hasNextLine()){
                numberLines++;
            }

            fileScan.close();
        }

        catch(IOException e){
        }
    }   

    private static void gatherStatistics(String sArray[]) {
        for (int i = 0; i < sArray.length; i++){

            String line = sArray[i];
            numberChars += line.length();

            for (int j = 0; j < line.length(); j++){

                char c = line.charAt(j);    

                if(Character.isUpperCase(c))
                    numberUpper++;

                else if(Character.isLowerCase(c))
                    numberLower++;

                else if(Character.isDigit(c))
                    numberDigits++;

                else if(Character.isSpaceChar(c))
                    numSpaces++;

                else if(c == '\t')
                    numberTabs++;

                else
                    numberSpecial++;
            }
        }
    }

    private static void writeFile(String outputFile) {

        try{

            PrintWriter fileOut = new PrintWriter(new File("Statistics.txt"));
            fileOut.println("Number of Lines: " + numberLines);
            fileOut.println("Number of Words: " + numberWords);
            fileOut.println("Number of Lines: " + numberChars);
            fileOut.println("Number of Lines: " + numberUpper);
            fileOut.println("Number of Lines: " + numberLower);
            fileOut.println("Number of Lines: " + numberDigits);
            fileOut.println("Number of Lines: " + numSpaces);
            fileOut.println("Number of Lines: " + numberTabs);
            fileOut.println("Number of Lines: " + numberSpecial);

            fileOut.close();
            System.exit(1);

        } catch (FileNotFoundException e){}
    }

    public static void main(String[] args) {

        readFile(args[0]);
        gatherStatistics(arrayString);
        writeFile(args[1]);
        System.exit(1);

    }
}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Scanner;
公共类P5{
静态字符串数组字符串[]=新字符串[100];
静态整数线=0;
静态整数单词=0;
静态整数cars=0;
静态int numberUpper=0;
静态int numberLower=0;
静态int numberDigits=0;
静态int numSpaces=0;
静态int numberTabs=0;
静态整数特殊=0;
私有静态无效读取文件(字符串输入文件){
试一试{
Scanner fileScan=new Scanner(新文件(“Declaration.txt”);
while(fileScan.hasNext()){
arrayString[numberWords]=fileScan.next();
numberWords++;
}
while(fileScan.hasNextLine()){
numberLines++;
}
fileScan.close();
}
捕获(IOE异常){
}
}   
私有静态统计信息(字符串sArray[]){
for(int i=0;i
您已经读取了一个超过100行的文件

不要使用数组,而是使用

更改此行:

static String arrayString[] = new String[100];
private static void gatherStatistics(String sArray[]) {
arrayString[numberWords] = fileScan.next();
致:

致:


catch(FileNotFoundException e){}
永远不会有空的catch块。哪一行抛出AIOOBE?当然,这里是线程“main”java.lang.ArrayIndexOutOfBoundsException:100在P5.readFile(P5.java:34)在P5.main(P5.java:103)中的异常哪一行是P5.java的34?文件的行数是否超过100?为什么将数组限制设置为100?这个错误是完全可以自我解释的。
private static void gatherStatistics(ArrayList<String> sArray) {
arrayString[numberWords] = fileScan.next();
arrayString.add(fileScan.next());