线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:3位于Generator.main(Generator.java:35)
我似乎得到一个资源泄漏,说我的扫描器从未关闭,我的导入java.lang.reflect.Array;从未使用过。关于如何解决这两个问题中的任何一个以及为什么会发生这样的问题,您有什么想法吗?您可能想要改变线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:3位于Generator.main(Generator.java:35),java,indexoutofboundsexception,Java,Indexoutofboundsexception,我似乎得到一个资源泄漏,说我的扫描器从未关闭,我的导入java.lang.reflect.Array;从未使用过。关于如何解决这两个问题中的任何一个以及为什么会发生这样的问题,您有什么想法吗?您可能想要改变 import java.io.File; import java.io.FileNotFoundException; import java.lang.reflect.Array; import java.util.Scanner; public class Generator {
import java.io.File;
import java.io.FileNotFoundException;
import java.lang.reflect.Array;
import java.util.Scanner;
public class Generator {
public static void main(String[] args) throws FileNotFoundException {
int scorehome = 0;
int scoreaway = 0;
int invalid = 0;
int goals = 0;
int valid = 0;
Scanner scanner = new Scanner(new File("Results.txt")); // create a scanner which scans from a file
String line; // stores the each line of text read from the file
while ( scanner.hasNext() ) {
line = scanner.nextLine(); // read the next line of text from the file
//split the line
String [] elements = line.split(":");
//System.out.println("Element " + (i+1) + " was : " + elements[i]);
if (elements.length < 4) {
String home = elements[0].trim();
String away = elements[1].trim();
String homescore = elements[2].trim();
String awayscore = elements[3].trim();
boolean homescoreVal = false;
boolean awayscoreVal = false;
boolean homenameVal = false;
boolean awaynameVal = false;
try { // "try" is a special statement which allows us to deal with "exceptions"
scorehome = Integer.parseInt(homescore); // attempt to convert the String into an Integer type value
homescoreVal = true;
} catch (NumberFormatException e) {
homescoreVal = false;
}
try {
scoreaway = Integer.parseInt(awayscore); // attempt to convert the String into an Integer type value
awayscoreVal = true;
} catch (NumberFormatException e) {
homescoreVal = false;
}
if (home.length() <= 1) {
homenameVal = false;
} else {
homenameVal = true;
}
if (away.length() <= 1) {
awaynameVal = false;
} else {
awaynameVal = true;
}
if (homescoreVal == true && awayscoreVal == true
&& homenameVal == true && awaynameVal == true){
System.out.println(home + " [" + scorehome + "] | "
+ away + " [" + scoreaway + "]\r");
goals = (scorehome + scoreaway) + goals;
valid = 1 + valid;
} else {
invalid = 1 +invalid;
}
} else {
invalid = 1 + invalid;
}
}
System.out.println("\rValid match was " + valid
+ ", total goals scored was " + goals);
System.out.println("Invalid match count was " + invalid + ".");
System.out.println("\nEOF"); // Output and End Of File message.
}
}
由于在尝试访问元素[3]时,元素数组中至少要存在4个元素。使用扫描仪实例后,请调用Scanner.close。只需擦除数组导入;你不用它,所以它是不必要的。我不明白你在说什么?哪一行是第35行?我们大多数人不会将代码复制粘贴到文本编辑器中。上面源代码中的哪一行是源代码中的第35行,因为错误表明错误在第35行。哪一行是第35行?字符串awayscore=elements[3]。修剪;第35行很抱歉,程序需要确保有4个元素,如果没有,则不显示reults@JackHumphreys如果只需要4个元素,请将条件更改为elements.length==4
if (elements.length < 4) {
String home = elements[0].trim();
String away = elements[1].trim();
String homescore = elements[2].trim();
String awayscore = elements[3].trim();
if (elements.length >= 4) {
String home = elements[0].trim();
String away = elements[1].trim();
String homescore = elements[2].trim();
String awayscore = elements[3].trim();