繁体   English   中英

如何将输出传递给另一个 Java 类?

[英]How to pass output to another Java class?

我是 Java 的新手,我想将一些输出传递到 Java 中的当前类之外。 首先,我要求用户输入一些数字并存储为字符串。 然后将它们转换为整数。 我想做的是将这些值转化为一些方法。 这是我的代码。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame {
    JTextField x = new JTextField("X",5);
    JTextField y = new JTextField("Y",5);
    JTextField z = new JTextField("Z",5);
    JButton chk = new JButton("Check");
    public Main(){
        JPanel newPanel = new JPanel();
        newPanel.add(x);
        newPanel.add(y);
        newPanel.add(z);
        newPanel.add(chk);
            chk.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //These are the values I want to pass
                    int xi = Integer.parseInt(x.getText());
                    int yi = Integer.parseInt(y.getText());
                    int zi = Integer.parseInt(z.getText());
                    System.out.printf("you data is %d\n",xi);
                    System.out.printf("Your data is %d\n",yi);
                    System.out.printf("you data is %d",zi);
                }
            });
        add(newPanel);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[]args) {
        new Main().setVisible(true);
    }
}

如您所见,我想将这些输出(即 xi、yi 和 zi)传递给另一个类。 喜欢跟...

int result = xi+yi+zi;
System.out.println(result);

我怎样才能做到这一点? 如何将这些数据传递给另一个类? 谢谢

在 main 中创建 3 个局部变量如何,您将能够在整个函数中使用它们? 正如我所见,您声明的变量只能在事件函数中使用。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Main extends JFrame {
    JTextField x = new JTextField("X",5);
    JTextField y = new JTextField("Y",5);
    JTextField z = new JTextField("Z",5);
    int xi,yi,zi; //new variables to use later on
    JButton chk = new JButton("Check");
    public Main(){
        JPanel newPanel = new JPanel();
        newPanel.add(x);
        newPanel.add(y);
        newPanel.add(z);
        newPanel.add(chk);
            chk.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    //storing the values in the ""global"" variables
                    xi = Integer.parseInt(x.getText());
                    yi = Integer.parseInt(y.getText());
                    zi = Integer.parseInt(z.getText());
                    System.out.printf("you data is %d\n",xi);
                    System.out.printf("Your data is %d\n",yi);
                    System.out.printf("you data is %d",zi);
                }
            });
        add(newPanel);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public static void main(String[]args) {
        new Main().setVisible(true);
    }
}

然后,如果您想稍后使用它们,就像按下另一个按钮一样,您将能够做到。

希望这是你所要求的...... :)

您可以向 Main 类添加一个方法,该方法返回一个包含所述数字的数组。 public int[] func(){ int[] arr = new int[3]; for(...) //将数字输入到数组中(理想情况下,您可以将 Jtext 字段放在一个可以循环的数组中。返回 arr;

希望对你有帮助

有很多方法可以做到这一点,这完全取决于用例。 如果您只有三个变量,那么您可以将它们作为方法参数传递。

即我有我的其他类。

class OtherClass {
   static void doSomething(int x, int y, int z) {
        //do something
   }
}

或者

您可以使用构造函数将实例变量初始化为 OtherClass,即

class OtherClass {
   int a;
   int b;
   int c;
   
   OtherClass(int x, int y, int z) {
       this.a = x;
       this.b = y;
       this.c = z;
   }
}

//calling
OtherClass o = new OtherClass(1,2,3);

只需创建一个类和一个方法。 通过将方法设置为 void 或任何其他返回类型,放置您的代码,即您想要在该方法内执行的任何操作。

例如,在您的程序中,您要打印 xi、yi 和 zi 的总和

public class MyClass {
    public void sum(int xi, int yi, int zi) {
        System.out.println(xi+yi+zi);
    }
    
//  or
    
    public int sum1(int xi, int yi, int zi) {
        return xi+yi+zi;
    }
    
}

创建此类的对象并调用该方法。 根据您的代码,您可以这样做

 @Override
     public void actionPerformed(ActionEvent e) {
         //storing the values in the ""global"" variables
         xi = Integer.parseInt(x.getText());
         yi = Integer.parseInt(y.getText());
         zi = Integer.parseInt(z.getText());
         MyClass myClass = new MyClass();
         myClass.sum(xi, yi, zi);
        
//      or
        
         int result = myClass.sum1(xi, yi, zi);
         System.out.println(result);
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM