как переключать if и else заявления, чтобы попытаться поймать - PullRequest
2 голосов
/ 01 декабря 2010

, поэтому я сделал эту программу, но мне нужно изменить операторы 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 ]

2 голосов
/ 01 декабря 2010

Не используйте обработку исключений в качестве механизма управления потоком.Сохранить условие if.

1 голос
/ 01 декабря 2010

Попробуйте это:

try{
    valueField.setText(number[num]+"");
}catch(ArrayIndexOutOfBoundsException e){
    valueField.setText("Out of bound");
}
1 голос
/ 01 декабря 2010

У Java отличный учебный набор.

Я предлагаю пройти через раздел Исключения: (охватывающий try / catch): http://download.oracle.com/javase/tutorial/essential/exceptions/

0 голосов
/ 01 декабря 2010

Вы говорите «я должен», потому что учитель / начальник сказал вам, или потому что вы предполагаете , что вам нужно?Что движет этим изменением?Немного подумав о том, что может показать основная цель, в конце концов, нет необходимости в изменениях.

0 голосов
/ 01 декабря 2010

Один из способов - переписать вашу 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) {

немного обобщенно, я уверен, что вы можете улучшить его.

...