加法和乘法错误,模式模型,视图,控制器
Error in add and multply, pattern model, view, controller
我的程序中有一些数学运算有问题,我使用模型-视图-控制器模式,所以这里重要的是模型和控制器。错误出现在加法和乘法中。
我的程序进行运算,add 的结果是:4x elevado a 1 /
乘法的结果是:2x elevado a 2
但结果不正确,add(sumar) 的正确答案必须是 2x elevado a 1,multiplicar(multiplicar) 的正确答案必须是 1x elevado 2。我移植了我的 class 模型和控制器。
public class Model
{
int valor;
int orden;
public Model()
{
this.valor=0;
this.orden=0;
}
public Modelo(int val, int ord)
{
this.valor=val;
this.orden=ord;
}
public String mostrarMonomio(Modelo m)
{
String cadena = null;
cadena = m.valor+"x elevado a "+m.orden;
return (cadena);
}
//function for add
public Modelo sumaMonomio(Modelo m)
{
if(this.orden==m.orden)
{
return (new Modelo (this.valor+m.valor, this.orden));
}
else
{
return (null);
}
}
//Function for multiply
public Modelo multiplicarMonomio(Modelo m)
{
return (new Modelo (this.valor*m.valor, this.orden+m.orden));
}
}
我的控制器的一部分
if(objvista.btnOperar2.equals(evento.getSource()))
{
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio1.getText()),Integer.parseInt(objvista.txtOrdenMonomio1.getText()));
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio2.getText()),Integer.parseInt(objvista.txtOrdenMonomio2.getText()));
if(evento.getActionCommand()=="Sumar")
{
objmodelo=objmodelo.sumaMonomio(objmodelo);
}
else if(evento.getActionCommand()=="Multiplicar")
{
objmodelo=objmodelo.multiplicarMonomio(objmodelo);
}
objvista.txtResultado2.setText(objmodelo.mostrarMonomio(objmodelo.sumaMonomio(objmodelo)));
}
我刚刚在您上面提到的这个代码块中发现了一些问题
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio1.getText()),Integer.parseInt(objvista.txtOrdenMonomio1.getText()));
// it overrides the above instance creation
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio2.getText()),Integer.parseInt(objvista.txtOrdenMonomio2.getText()));
由于第二条语句覆盖了第一条语句,因此输出与预期不同,因为 objmodelo
对象具有从第二条语句分配的值。
也使用 equals
而不是 ==
因为 ==
在 java 中对 String
的行为不同,即 ==
检查字符串对象引用而不是值。
供您参考:
https://www.geeksforgeeks.org/difference-equals-method-java/
我的程序中有一些数学运算有问题,我使用模型-视图-控制器模式,所以这里重要的是模型和控制器。错误出现在加法和乘法中。
我的程序进行运算,add 的结果是:4x elevado a 1 / 乘法的结果是:2x elevado a 2
但结果不正确,add(sumar) 的正确答案必须是 2x elevado a 1,multiplicar(multiplicar) 的正确答案必须是 1x elevado 2。我移植了我的 class 模型和控制器。
public class Model
{
int valor;
int orden;
public Model()
{
this.valor=0;
this.orden=0;
}
public Modelo(int val, int ord)
{
this.valor=val;
this.orden=ord;
}
public String mostrarMonomio(Modelo m)
{
String cadena = null;
cadena = m.valor+"x elevado a "+m.orden;
return (cadena);
}
//function for add
public Modelo sumaMonomio(Modelo m)
{
if(this.orden==m.orden)
{
return (new Modelo (this.valor+m.valor, this.orden));
}
else
{
return (null);
}
}
//Function for multiply
public Modelo multiplicarMonomio(Modelo m)
{
return (new Modelo (this.valor*m.valor, this.orden+m.orden));
}
} 我的控制器的一部分
if(objvista.btnOperar2.equals(evento.getSource()))
{
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio1.getText()),Integer.parseInt(objvista.txtOrdenMonomio1.getText()));
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio2.getText()),Integer.parseInt(objvista.txtOrdenMonomio2.getText()));
if(evento.getActionCommand()=="Sumar")
{
objmodelo=objmodelo.sumaMonomio(objmodelo);
}
else if(evento.getActionCommand()=="Multiplicar")
{
objmodelo=objmodelo.multiplicarMonomio(objmodelo);
}
objvista.txtResultado2.setText(objmodelo.mostrarMonomio(objmodelo.sumaMonomio(objmodelo)));
}
我刚刚在您上面提到的这个代码块中发现了一些问题
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio1.getText()),Integer.parseInt(objvista.txtOrdenMonomio1.getText()));
// it overrides the above instance creation
objmodelo = new Modelo(Integer.parseInt(objvista.txtValorMonomio2.getText()),Integer.parseInt(objvista.txtOrdenMonomio2.getText()));
由于第二条语句覆盖了第一条语句,因此输出与预期不同,因为 objmodelo
对象具有从第二条语句分配的值。
也使用 equals
而不是 ==
因为 ==
在 java 中对 String
的行为不同,即 ==
检查字符串对象引用而不是值。
供您参考: https://www.geeksforgeeks.org/difference-equals-method-java/