Java 将变量发送到方法进行添加

Java 将变量发送到方法进行添加,java,methods,addition,Java,Methods,Addition,我一直在使用JTextField实现一个程序来添加两个数字 我已经能够使它运行,但是我想更改代码,以便将JTextField中的值发送到要添加到一起的方法文件(位于同一文件夹中)。添加值后,我希望将答案发送回第三个JTextField,以显示答案。我将其设置为当按下JButton时,调用该方法,但是我不知道如何编写该方法并在第三个JTextField中获得答案 这是我的代码,A类是格式,B类是方法文件: import javax.swing.*; 导入java.awt.event.*; 公共类A

我一直在使用
JTextField
实现一个程序来添加两个数字

我已经能够使它运行,但是我想更改代码,以便将
JTextField
中的值发送到要添加到一起的方法文件(位于同一文件夹中)。添加值后,我希望将答案发送回第三个
JTextField
,以显示答案。我将其设置为当按下
JButton
时,调用该方法,但是我不知道如何编写该方法并在第三个
JTextField
中获得答案

这是我的代码,A类是格式,B类是方法文件:

import javax.swing.*;
导入java.awt.event.*;
公共类A实现ActionListener{
JTextField tf1、tf2、tf3;
按钮b1;
(){
JFrame f=新的JFrame();
JLabel myLabel=新的JLabel(“输入第一个值”);
myLabel.setBounds(50,50,150,20);
tf1=新的JTextField();
tf1.立根(50,75,250,20);
JLabel mysecondLabel=新JLabel(“输入第二个值”);
mysecondLabel.setBounds(50,125,150,20);
tf2=新的JTextField();
tf2.立根(50、150、250、20);
tf3=新的JTextField();
tf3.立根(160、225、140、20);
tf3.setEditable(false);
b1=新按钮(“总和”);
b1.立根(50、225、95、20);
b1.添加ActionListener(本);
f、 添加(tf1);
f、 添加(myLabel);
f、 添加(tf2);
f、 添加(mysecondLabel);
f、 添加(tf3);
f、 添加(b1);
f、 设置大小(300300);
f、 setLayout(空);
f、 setVisible(真);
}
已执行的公共无效操作(操作事件e){
字符串s1=tf1.getText();
字符串s2=tf2.getText();
intx=Integer.parseInt(s1);
int y=Integer.parseInt(s2);
int z=0;
如果(如getSource()==b1){
B=新的B();
b、 mymethod();
}
字符串结果=String.valueOf(z);
tf3.setText(结果);
}
公共静态void main(字符串[]args){
新A();
}
}
import javax.swing.*;
导入java.awt.event.*;
公共B级{
公共静态void mymethod(){
int x,y;
intz=x+y;
}      
}

您可能希望执行以下操作:

try {
  int a = Integer.valueOf(tf1.getText());
  int b = Integer.valueOf(tf2.getText());
  int sum = a + b;
  tf3.setText(Integer.toString(sum));
} catch (NumberFormatException e) {
  tf3.setText("Evaluation error: " + e.getMessage();
}
顺便说一句,您的助手方法
mymethod()
可能应该接受参数并返回值,而不是将其分配给另一个局部变量

static int sum(int a, int b) {
  return a + b;
}

您有一个
JButton
,其中定义了:
b1.addActionListener(this)-这一行说“当调用jbutton时,执行
this
this
引用的actionListener‘实现’
actionListener
,这意味着类有一个方法:
actionPerformed
接收
ActionEvent
(它本质上告诉动作侦听器事件的起源)

因为您的类实现了ActionListener方法
actionPerformed()
,所以这是在单击按钮时调用的方法

actionPerformed方法试图通过调用无效的
mymethod()
B
获取值。这是因为变量仅对类
B
是局部变量。如果希望它们出现在类
A
中,则需要声明类
B
更像:

公共B类{
公共静态int x(){
返回5;
}
公共静态int y(){
返回15;
}
公共静态int-mymethod(int x,int y){
返回x+y;
}
}
然后,对于类
A
的action-performed方法,您将编写:

public void actionPerformed(ActionEvent e){
如果(e.getSource()!=b1){
返回;
}
字符串s1=tf1.setText(B.x());//x
字符串s2=tf2.setText(B.y());//y
intx=Integer.parseInt(s1.getText());
int y=Integer.parseInt(s2.getText());
字符串结果=B.mymethod(x,y);
setText(result);//将tf3的值设置为X+Y
}  
如果您想让按钮将文本字段中的内容相加,只需删除将文本设置为
B.x()
B.y()
的两行即可


但是,如果在两个文本字段中输入有效整数以外的任何内容,请注意可能会发生的异常。您可能需要处理这些内容。整数也有一个最大值,因此只需在
(2^31)-1处添加两个整数即可最大化,请参见:

B.myMethod()不应编译。x,y,z未定义。您需要参数。@感谢NomadMaker的回复。您能详细说明一下吗?类似于``公共静态int-myMethod(int-x,int-y){返回x+y;}