0
私はこのactionPerformedメソッドを私の電卓プログラムに実装しようとしています。私は、ボタンを表示し、押されたときに計算を実行するループを作成するのに問題があります。ところで、if文を使ってこれを行うと問題を解決できますが、コードをきれいにしたいのです。loopを使用してactionPerformedを実行する(クリックボタンで)
String expr1 = "";
private static final String[] bText = {"7", "8", "9", "+", "4", "5", "6", "- ", "1", "2", "3", "*", "0", ".", "=", "/", "(", ")", "C", "CE"};
Button[] buttons = new Button[ bText.length ];
public void actionPerformed(ActionEvent arg0) {
String input = textField.getText();
// Trying to get the first 12 items for testing
for(int index = 0; index <=12; index++)
{
if(arg0.getSource()==buttons[index])
{
if(input.contains("1,2,3,4,5,6,7,8,9,0"))
{
textField.setText(input + bText[index]);
expr1 = expr1 + index;
}
if(input.contains("+-*/")){
expr1 = expr1 + bText[index];
textField.setText("");
}
}
}
for(int i=13; i <=16; i++){
if(arg0.getSource()==buttons[i]){
expr1 = expr1 + bText[i];
textField.setText("");
}
}
/**
If I do this one by one using if statements I can fix my problem but I want to make my code cleaner.
*/
//For CE button
if (arg0.getSource() == buttons[18]) {
String s = textField.getText().toString();
s = s.substring(0, s.length() - 1);
textField.setText(s);
}
else if(arg0.getSource()==buttons[17]) {
textField.setText("");
expr1 = "";
}
// This will calculate expressins. This is a "=" button
else if (arg0.getSource() == buttons[19]) {
System.out.println(expr1);
textField.setText("" + Integer.toString(calculatorEvaluator.eval(expr1)));
}
}
説明し、より良い、それは、より読みやすいですので、あなたのコードをフォーマットしてください...あなたが決定することが可能になりますあなたの問題。あなたは何の問題を抱えているのですか? – ChiefTwoPencils
イベントからボタンにアクセスするには、 'JButton btn =(JButton)arg0.getSource();'を実行します。実行するアクションを判断するために 'getText'または' getActionCommand'を使用する必要があります – MadProgrammer
私は不思議でしたforループを使用してコードの長さを最小限に抑える方法。私がif文を使用すると、if文を20個使用しなければならず、もっと短い方法があるかどうか疑問に思っていました。すなわち、ループ。フォーマットして申し訳ありません、私はそれをやります。 – user7062312