2010-12-01 38 views
2

所以我製作了這個程序,但我必須更改if和else語句來嘗試捕獲。 任何幫助,將不勝感激:) 這裏是代碼:如何切換if和else語句來嘗試並捕獲

import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 
import java.util.*; 

public class ShowIndex extends Applet implements ActionListener 

{ int [] number =new int[100]; 
    Random r= new Random(); 
    Label indexlabel = new Label(" index:"); 
    TextField indexfield = new TextField(10); 

    Label valuelabel = new Label("value:"); 
    TextField valuefield = new TextField(10); 

    Button showButton = new Button ("Show Element"); 
    public void init() 
     { int i; 
     for(i=0;i<100;i++) 
      number[i]=r.nextInt(1000)+1; // random number between 1 and 1000 
     add(indexlabel); 
     add(indexfield); 
     add(valuelabel); 
     add(valuefield); 
     add(showButton); 

     showButton.addActionListener(this); 
     valuefield.setEditable(false); 

     } 
    public void actionPerformed(ActionEvent e)  
     { String inputString; 
     int num; 
     inputString=indexfield.getText(); 
     num=Integer.parseInt(inputString); 
     if(num>99 ||num<0) 
      valuefield.setText("Outof Bound"); 
     else  
      valuefield.setText(number[num]+""); 

     } 
} 
+2

你有什麼試過?你知道如何嘗試和抓住工作嗎?你有什麼錯誤嗎?一個更具體的問題告訴我們,你試圖至少完成你的任務並失敗,而不是簡單地懶惰。 – 2010-12-01 06:04:21

+0

我真的不知道它是如何工作的......你能解釋一下嗎 – 2010-12-01 06:06:18

回答

0

一種方法是重寫actionPerformed功能:

public void actionPerformed(ActionEvent e) { 

    String inputString; 
    int num; 
    inputString=indexfield.getText(); 
    num=Integer.parseInt(inputString); 

    try { 
     valuefield.setText(number[num]+""); 
    } 
    catch (Exception e) { 
     valuefield.setText("Outof Bound"); 
    } 

    // old version 
    /* 
    if(num>99 ||num<0) 
     valuefield.setText("Outof Bound"); 
    else  
     valuefield.setText(number[num]+""); 
    */ 

    } 

我不會向你解釋一下這個代碼作品。它可能甚至不會編譯,我沒有嘗試過。做一點研究。看看這些想法,並試着看看它們是如何融合在一起的。以數組和列表格式研究數組邊界。並行

catch (Exception e) { 

是有點通用,我相信你可以改善它。

1

試試這個:

try{ 
    valueField.setText(number[num]+""); 
}catch(ArrayIndexOutOfBoundsException e){ 
    valueField.setText("Out of bound"); 
} 
2

不要使用異常處理的流量控制機制。保留if子句。

0

你是說「我必須」,因爲老師/老闆告訴過你,或者因爲你假設你必須?什麼推動了這種變化?想一想基本目標可能揭示的是什麼,畢竟不需要改變。