2016-12-11 128 views
0

尝试处理异常。根据cricket_007的建议使用If语句,他非常有帮助!但是,仍然在努力通过它。基本上,在我的gui中回答第一个字符串问题,然后递增索引计数器以获得下一个问题。在用户回答第七个问题后,我想结束该方法,但是我只是得到outOfBounds异常。我试图索引超出范围异常处理

如果(questionIndex> questions.size()) 如果(questionsIndex>(questions.size() - 1)

,并且试图写入它的其他方式,如果索引是更小,其中,比大小,问的问题......和其他显示“完成!”,然后实施 “结果()”方法。

protected void calcPersonnelRisk() { 
    if(questionIndex >(questions.size()-1)){ 
     message.setText("Done"); 
     System.exit(0); 
    } 
     //do closing action methods, display total Personnel Risk , end program 
    else{ 
    yesButton.setVisible(false); 
    noButton.setVisible(false); 
    message.setFont(new Font("Tahoma", Font.BOLD, 14));  
    message.setText(questions.get(questionIndex++)); 
    enterButton.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
       int r= Integer.parseInt(textField.getText().trim()); 
       responses.add(r); 
       textField.setText(""); 
       message.setText(questions.get(questionIndex++));      
     }}); 

    } 

}//end calcPersonnelRisk 

回答

0

的sooo,回答我自己的问题(好样的),我还是信贷Cricket_007。他引导我朝着正确的方向发展,我只是把代码放在错误的地方,解决方案是有条件的移动

protected void calcPersonnelRisk() { 
    yesButton.setVisible(false); 
    noButton.setVisible(false); 
    message.setFont(new Font("Tahoma", Font.BOLD, 14)); 
    message.setText(questions.get(questionIndex++)); 
    enterButton.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
       int r= Integer.parseInt(textField.getText().trim()); 
       responses.add(r); 
       textField.setText(""); 
       if(questionIndex < questions.size()){ 
       message.setText(questions.get(questionIndex++));} 
       else message.setText("Done"); 
       //do finishing stuff, move to the next method! 
     }});