Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 项目赢得';过一会儿我就跑不动了,我明白了_Java_Exception - Fatal编程技术网

Java 项目赢得';过一会儿我就跑不动了,我明白了

Java 项目赢得';过一会儿我就跑不动了,我明白了,java,exception,Java,Exception,我把这件事搞砸了有一段时间了,我想不出来 我正在进行突破游戏,但我突然出现了这样的错误: Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at com.spil.Start.sortTable(Start.java:388) at com.spil.Start.printScores(Start.java:440)

我把这件事搞砸了有一段时间了,我想不出来

我正在进行突破游戏,但我突然出现了这样的错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at com.spil.Start.sortTable(Start.java:388)
at com.spil.Start.printScores(Start.java:440)
at com.spil.Start.paintComponent(Start.java:304)
at java.desktop/javax.swing.JComponent.paint(JComponent.java:1074)
at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5255)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(RepaintManager.java:1643)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1618)
at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1556)
at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1323)
at java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5203)
at java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5013)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:848)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:848)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:823)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:772)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1884)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
下面是:at com.spil.Start.sortTable(Start.java:388)的代码

public void sortTable()引发IOException{
文件f=新文件(“HighScores.txt”);
File temp=新文件(“temp.txt”);
TreeMap topTen=新的TreeMap();
BufferedReader br=新的BufferedReader(新文件读取器(f.getAbsoluteFile());
BufferedWriter bw=新的BufferedWriter(新的FileWriter(temp.getAbsoluteFile());
字符串行=null;
而((line=br.readLine())!=null){
if(line.isEmpty()){
继续;
}
String[]scores=line.split(“点:”);
整数分数=整数.valueOf(分数[1]);//这是第388行。。
ArrayList players=null;
如果((玩家=topTen.get(score))==null){
玩家=新阵列列表(1);
玩家。添加(分数[0]);
topTen.put(整数.valueOf(分数[1]),玩家);
}
否则{
玩家。添加(分数[0]);
}
}
for(整型分数:topTen.DescendangKeyset()){
对于(弦乐演奏者:前十名。获得(分数)){
试一试{
追加(玩家+“分数:”+Score+“\n”);
}捕获(ioe异常ioe){
ioe.printStackTrace();
}
}
}
br.close();
bw.close();
试一试{
makeNewScoreTable();
}捕获(ioe异常ioe){
ioe.printStackTrace();
}
}

有人能告诉我我做错了什么或错过了什么吗?它以前工作得很好,但突然出现了这种情况。

在下面的代码中,
行.split
似乎没有返回大小为
2
的数组(或者根据您的要求返回更多)

您可以通过在尝试从数组中访问元素之前检查数组的大小来解决此问题,例如:

String[] scores = line.split("Points: ");
Integer score;
if(scores.length >= 2) {
    score = Integer.valueOf(scores[1]);
    //...
}

但是,我建议您找出
line.split
没有返回大小为
2
的数组(或根据您的要求返回更多)的原因。您需要检查文件的内容。

看起来有一行没有
点:
或类似的内容。感谢您的帮助和提示:)
String[] scores = line.split("Points: ");
Integer score = Integer.valueOf(scores[1]);
String[] scores = line.split("Points: ");
Integer score;
if(scores.length >= 2) {
    score = Integer.valueOf(scores[1]);
    //...
}