public class Enshu12 extends JApplet
{
private JLabel lb1;
private JLabel lb2;
int num=0;
int now=0;
public void init()
{
lb1=new JLabel("数字を入力してください。");
lb2=new JLabel(""+num+"");
add(lb1,BorderLayout.NORTH);
add(lb2,BorderLayout.SOUTH);
addKeyListener(new SampleKeyListener());
}
public class SampleKeyListener extends KeyAdapter
{
int i;
public void keyPressed(KeyEvent e)
{
char c=e.getKeyChar();
int mod=e.getModifiersEx();
if(mod==InputEvent.SHIFT_DOWN_MASK||c=='-'||c=='/'){
select(c);
}
else{
inputNum(c);
calc();
lb2.setText(""+num+"");
}
}
public void select(char c)
{
switch(c){
case '+': now=1;lb1.setText("足し算をします。数字を入力して下さい。");break;
case '-':now=2;lb1.setText("引き算をします。数字を入力してください。");break;
case '*':now=3;lb1.setText("かけ算をします。数字を入力して下さい。");break;
case '/':now=4;lb1.setText("割り算をします。数字を入力して下さい。");break;
}
}
public void inputNum(char c)
{
switch(c){
case '0': i=0;break;
case '1': i=1;break;
case '2': i=2;break;
case '3': i=3;break;
case '4': i=4;break;
case '5': i=5;break;
case '6': i=6;break;
case '7': i=7;break;
case '8': i=8;break;
case '9': i=9;break;
}
}
public void calc()
{
switch(now){
case 1: num=num+i; break;
case 2: num=num-i; break;
case 3: num=num*i;break;
case 4: num=num/i; break;
default : num=i; break;
}
}
}
簡単な電卓を作り電卓機能としてはできたのですが、数字と演算子を交互に入力させたいため、数字または演算子の入力が連続入力された場合は例外処理をさせたいのですが、例外のクラスは作るとしてどのような仕組みにしたら良いでしょうか?単純にbooleanでそれぞれの切り替えをするとうまく動きません・・><教えてください。