为什么arraylist.get(0)
运行时报错。编译时我没有收到错误,但当我运行它时,它运行完美,但它给出:
线程“AWT-EventQueue-0”中出现异常 java.lang.IndexOutOfBoundsException:索引:0,大小:0
程序报告错误位于实现arraylist.get(0)
的行中。我在 Paint() 之外声明了 arraylist ,它给出了上面的错误。但是当我在paint()中声明它时,没有报告错误。但是,我想在外部声明arraylist
。
如何在 Paint(); 之外声明 arraylist
?
下面是我的代码:
class Game{
int x=0, y=250;
String line;
String[] list;
static ArrayList<String> arraylist;
public static void main(String[] args){
Game game= new Game();
game.read();
}
public void read(){
arraylist= new ArrayList<String>();
try{
BufferedReader br = new BufferedReader(new FileReader("dictionary.txt"));
line= br.readLine();
list= line.split(" ");
for(int i=0; i<list.length ;i++)
arraylist.add(list[i]);
Collections.shuffle(arraylist);
}
catch(Exception e){}
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2= (Graphics2D)g;
Font font= new Font("Impact",Font.PLAIN,10);
g2.setFont(font);
g2.drawString(arraylist.get(0),x,y);
try{
Thread.sleep(50);
}
catch(Exception e){}
repaint();
}
}
更新:编辑代码
最佳答案
在向 arraylist
添加任何内容之前,在 UI 线程中调用 Paint 多次。
您可以简单地检查它是否不为空,并在其中至少列出一项。
关于java - 为什么在paint() 外部声明的变量在paint() 内部无法识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27086067/