如何切换if和else语句来尝试捕获

时间:2010-12-01 06:02:12

标签: java try-catch

所以我制作了这个程序,但我必须更改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]+"");

      }
}

5 个答案:

答案 0 :(得分:2)

不要将异常处理用作流量控制机制。保留if子句。

答案 1 :(得分:1)

Java有一个很棒的教程集。

我建议浏览Exceptions部分:(覆盖try / catch):http://download.oracle.com/javase/tutorial/essential/exceptions/

答案 2 :(得分:1)

试试这个:

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

答案 3 :(得分: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]+"");
    */

  }

我不会向您解释此代码的工作原理。它可能甚至不会编译,我没有尝试过。做一点研究。看看这些想法并试着看看它们是如何组合在一起的。关于数组边界的研究,以数组和List格式。行

catch (Exception e) {

有点通用,我相信你可以改进它。

答案 4 :(得分:0)

你是说“我必须”,因为老师/老板告诉你,或者因为你假设你必须这样做?是什么推动了这一变化?稍微考虑一下基本目标可能会发现,毕竟不需要改变。