[英]Constructor trouble shooting
這是我的項目:
package myProjects;
import java.awt.GridBagConstraints;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.*;
public class GeometryEquationSolver extends JFrame{
JPanel mainPanel;
JTextField eq1Text, eq2Text;
JButton enterButton, clearTextButton;
public static void main(String[] args) {
new GeometryEquationSolver();
}
public GeometryEquationSolver(){
this.setSize(340, 140);
this.setTitle("Equation Solver");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
mainPanel = new JPanel();
mainPanel.setLayout(new GridBagLayout());
addItem(new JLabel("Equation 1"), 0, 0, 1, 1);
addItem(new JLabel("Equation 2"), 2, 0, 1, 1);
eq1Text = new JTextField(10);
addItem(eq1Text, 0, 1, 1, 1);
eq2Text = new JTextField(10);
addItem(eq2Text, 2, 1, 1, 1);
addItem(new JLabel("="), 1, 1, 1, 1); // Just the "=" for looks.
enterButton = new JButton("Enter");
enterButton.addActionListener(e->{
Equation eq1 = new Equation(eq1Text.getText());
});
addItem(enterButton, 0, 2, 1, 1);
clearTextButton = new JButton("Clear");
clearTextButton.addActionListener(e->{
eq1Text.setText(null);
eq2Text.setText(null);
});
addItem(clearTextButton, 2, 2, 1, 1);
this.add(mainPanel);
this.setVisible(true);
}
private String[] rawData;
private String[] splitEq(String eq){
rawData = eq.split("");
return rawData;
}
private void addItem(JComponent c, int x, int y, int width, int height){
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx = 100.0;
gbc.weighty = 100.0;
gbc.fill = GridBagConstraints.NONE;
mainPanel.add(c, gbc);
}
}
class Equation{
public enum opperation {add, sub, mult, div};
public opperation opper;
public String eq;
public Equation(String eq){
this.eq = eq;
opper = opperation.add;
this.Equation(this.eq, opper);
}
public Equation(String eq, opperation opper){
}
}
我的問題出現在類方程式中。 在第一個構造函數中,我必須執行以下操作:
this.Equation(this.eq, opper);
我得到這個錯誤:
未為類型方程式定義方法方程式(String,Equation.opperation)
我試圖在第一個之后調用構造函數。 有誰知道如何解決這一問題?
正確的語法是this(this.eq, opper);
。 但是,由於此行必須是構造函數代碼中的第一行,因此它將變為this(eq, opperation.add);
。
因此,您的構造函數最終將如下所示:
public Equation(String eq){
this(eq, opperation.add);
this.eq = eq;
opper = opperation.add;
//this.Equation(this.eq, opper);
}
如果絕對有必要在調用其他構造函數之前執行一些代碼,則此答案可能會有所幫助。
如果要從構造函數調用構造函數,請參考https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
這是可以工作的代碼。
public class Equation {
public static enum opperation {add, sub, mult, div};
public opperation opper;
public String eq;
public Equation(String eq){
this(eq, opperation.add);
this.eq = eq;
opper = opperation.add;
}
public Equation(String eq, opperation opper){
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.