0

私は最大公約数計算機を作成しようとしています。このプロジェクトのGUIインターフェイスを作成する必要があり、正しく作成したと思いますが、計算に問題があるため、テストできません。

具体的には、次の2行でコンパイラでエラーが発生しています。

 int x =  xTextField.getText();
 int y = yTextField.getText();

エラーは「タイプmistmatch、Stringからintに変換できません」です。intx=0を挿入しようとしました。およびintx= 0; その前に運がなかった。また、これらをintからStringsに変更しようとしましたが、すべてがさらに混乱します。何を使うべきかテキストを取得する方法がわかりません。

これが私のコードの計算部分です:

 public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    if (source == exitButton)
        System.exit(0);
    else if (source == calculateButton) {
        int x =  xTextField.getText();
        int y = yTextField.getText();
        int gcd = greatestCommonDivisor(
                 x, y);
        gcdTextField.getText();
    }

}
private int greatestCommonDivisor(int x, int y) {
    // TODO Auto-generated method stub

    while (x != y) {
        if (x > y) {
            x = x - y;
        } else {
            y = y - x;
        }
    }
    return y;
 }

}

これが私のコード全体です:

   package chapt15;

 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import java.text.*;

 public class FutureValueApp {
public static void main(String[] args) {
    JFrame frame = new GcdFrame();
    frame.setVisible(true);
 }

 }
 class GcdFrame extends JFrame {
public GcdFrame() {
    setTitle("Greatest Common Divisor Finder");
    centerWindow(this);
    setSize(267, 200);
//  setResizable(false);
    setResizable(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new GcdPanel();
    this.add(panel);
}

private void centerWindow(Window w) {
    Toolkit tk = Toolkit.getDefaultToolkit();
    Dimension d = tk.getScreenSize();
    setLocation((d.width - w.getWidth()) / 2,
            (d.height - w.getHeight()) / 2);
}
 }

 class GcdPanel extends JPanel implements ActionListener {
private JTextField xTextField, yTextField,
        gcdTextField;
private JLabel xLabel, yLabel, gcdLabel;
private JButton calculateButton, exitButton;

public GcdPanel() {
    // display panel
    JPanel displayPanel = new JPanel();
//   displayPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
    displayPanel.setLayout(new GridLayout(4, 2));
    // payment label
    xLabel = new JLabel("X:");
    displayPanel.add(xLabel);

    // payment text field
    xTextField = new JTextField(10);
    displayPanel.add(xTextField);

    // rate label
    yLabel = new JLabel("Y:");
    displayPanel.add(yLabel);

    // rate text field
    yTextField = new JTextField(10);
    displayPanel.add(yTextField);


    // future value label
    gcdLabel = new JLabel("GCD:");
    displayPanel.add(gcdLabel);

    // future value text field
    gcdTextField = new JTextField(10);
    gcdTextField.setEditable(false);
    gcdTextField.setFocusable(false);
    displayPanel.add(gcdTextField);

    // button panel
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));

    // calculate button
    calculateButton = new JButton("Calculate");
    calculateButton.addActionListener(this);
    buttonPanel.add(calculateButton);

    // exit button
    exitButton = new JButton("Exit");
    exitButton.addActionListener(this);
    buttonPanel.add(exitButton);

    // add panels to main panel
    this.setLayout(new BorderLayout());
    this.add(displayPanel, BorderLayout.CENTER);
    this.add(buttonPanel, BorderLayout.SOUTH);
}

public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    if (source == exitButton)
        System.exit(0);
    else if (source == calculateButton) {
        int x =  xTextField.getText();
        int y = yTextField.getText();
        int gcd = greatestCommonDivisor(
                 x, y);
        gcdTextField.getText();
    }

}
private int greatestCommonDivisor(int x, int y) {
    // TODO Auto-generated method stub

    while (x != y) {
        if (x > y) {
            x = x - y;
        } else {
            y = y - x;
        }
    }
    return y;
 }

}
4

1 に答える 1

1

これを使って:

int x =  Integer.parseInt(xTextField.getText());

xTextField.getText()を返すので、にをString割り当てることはできませんStringint

したがって、を使用しStringて同等の値に解析する必要があります。それは値を取り、それをに解析します。intInteger.parseIntStringint

同じことがint y = yTextField.getText();

また、計算されたgdcをgdcテキストフィールドに設定する必要がある場合は、次を使用する必要があります。

int gcd = greatestCommonDivisor(x, y);
gcdTextField.setText(String.valueOf(gcd));
于 2012-11-26T05:26:12.543 に答える