所以我制作了这个程序,但我必须更改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]+"");
}
}
答案 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)
你是说“我必须”,因为老师/老板告诉你,或者因为你假设你必须这样做?是什么推动了这一变化?稍微考虑一下基本目标可能会发现,毕竟不需要改变。