继续获取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());