• 締切済み

一桁電卓(setText)

//<applet code="Calc.class" width="250" height="150" ></applet> import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calc extends JApplet implements ActionListener{ JTextField display; int row=4,column=4,value=0,d; char str,str2; JButton[][] button=new JButton[row][column]; String[][] buttonName={{"7","8","9","/"}, {"4","5","6","*"}, {"1","2","3","-"}, {"0","C","=","+"}}; public void init(){ Container pane=getContentPane(); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(4,4)); display=new JTextField(String.valueOf(value)); pane.add(display); display.setHorizontalAlignment(JTextField.RIGHT); display.setEditable(false); for(int a=0;a<row;a++){ for(int b=0;b<column;b++){ button[a][b]=new JButton(buttonName[a][b]); panel.add(button[a][b]); button[a][b].addActionListener(this); } } pane.add(panel,BorderLayout.SOUTH); } public void setText(int c){ if(str2!='/'&&str2!='*'&&str2!='-'&&str2!='+'){ value=c; } else if(str=='='){ display.setText(String.valueOf(value)); } if(str!='/'&&str!='*'&&str!='-'&&str!='+'&&str!='='){ display.setText(String.valueOf(c)); if(str2=='/')value=value/c; if(str2=='*')value=value*c; if(str2=='-')value=value-c; if(str2=='+')value=value+c; } else{ display.setText(String.valueOf(value)); if(str2=='/')value=value/c; if(str2=='*')value=value*c; if(str2=='-')value=value-c; if(str2=='+')value=value+c; } } public void actionPerformed(ActionEvent e){ for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ if(e.getSource()==button[i][j]){ str=buttonName[i][j].charAt(0); switch(str){ case '/': str2=str; setText(1); break; case '*': str2=str; setText(1); break; case '-': str2=str; setText(0); break; case '+': str2=str; setText(0); break; case '=': setText(d); break; case 'C': str2=str; value=0; setText(value); break; default: d=Integer.parseInt(buttonName[i][j]); setText(d); break; } } } } } } 上のプログラムは一桁電卓です。 プログラムは思ったように動くんですが、 seText(0、または1)の部分がどういう役目を果たしているか、0と1でどう違ってくるのかが分かりません。できればsetText(char)の説明も交えて教えていただけませんか?

みんなの回答

回答No.1

酷いソースだな…。 作った人に聞くのが一番ですよ。 setTextっていうぐらいだから、Textをsetするんですよ。 電卓の表示部分になってるJTextFieldに。 (つか、setText(char)なんてないし…。) ヒント この電卓は連続で計算した時、 例えば、1+2+3とすると、 「+」を押した時に、その前に押した数字で再度計算した値を表示します。 「+」や「-」で計算結果がおかしくならないのは…0or1? 「/」や「*」で計算結果がおかしくならないのは…0or1?

関連するQ&A

専門家に質問してみよう