简体   繁体   中英

How to return a value from one class to another ? Java

i'm having a bit of a problem. Here's the situation. I have an amount field in my main class that gets incremented when certain buttons are clicked on. There is a method provided through which you can delete any order (I'm basically programming for a restaurant terminal) and the amount gets decremented. The delete method is placed in another class.

public void posdel(int pos, JTextField amountFieldGot, int amountGot)
{
    if(slist==null)
    {
        JOptionPane.showMessageDialog(null, "No order has been placed yet.",null,JOptionPane.WARNING_MESSAGE);
    }
    else
    {
        if(pos==1)
        {
            reductionAmount = (slist.quantity*slist.price);
            amountGot = amountGot - reductionAmount;
            slist=slist.next;
        }
        else
        {
            int i=1;
            Node temp=slist;
            Node prev=null;
            while(temp.next!=null && i<pos)
            {
                prev=temp;
                temp=temp.next;
                i++;
            }
            if(pos==i)
            {
                prev.next=temp.next;
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Invalid order", null, JOptionPane.ERROR_MESSAGE);
            }
        }
    }
    amountFieldGot.setText(Integer.toString(amountGot));
}

So basically, I have an amountField in my GUI that i pass as a parameter to the posdel method. I also pass the amount value as a parameter. The new amount that i get is amountGot after the deletion of the first order. ( I haven't written the code for other positions.) Suppose the amount value i pass into the method is 30 (14+16) 14 = order 1, 16 = order2. And my first order has a value of 14. So amountGot = 30 - 14 which is 16. And the amountField in the GUI gets updated to 16. Now my order 2 becomes my order 1. And if i try to delete this, my amountField gets update to 14. (30-16 = 14). So i'm guessing the amount value stays the same itself as 30 and does not get updated to the new amountGot value. Can someone please help me solve this problem ?

below is the code for my delete button.

deleteButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                dishDelPos = JOptionPane.showInputDialog("Enter the position of the order to be deleted");
                try
                {
                    dishDeletePosition = Integer.parseInt(dishDelPos);
                    order1.posdel(dishDeletePosition, amountField, amount);
                    repaint();
                }
                catch(NumberFormatException ex1)
                {
                    JOptionPane.showMessageDialog(null,"This is not a valid position");
                }
            }
        });

A few things.

You can make the delete method in the class static. The you would reference it

 value = MyClass.deleteMethod();

You can create a new class to perform the method

MyClass myClass = new MyClass();
value = myClass.deleteMethod();

You can do it using a pointer of sorts, by passing in a reference to an already existing instance of the class holding the delete method, to where you want to call it.

 myFunction(MyClass myClass)
 {
    value = myClass.deleteMethod();
 }

basically set up your function to return a value

public static int deleteMethod()
{
}

this function returns an int.

or if you need to return more than that then set the class up with global variables of information

class MyClass
{
   public int value1;
   public int value2;
   public String value3;

   public void deleteMethod()
   {
       //does something with global variables
   }
}

now fetch the info after calling delete like so

Myclass myClass = new MyClass();
myClass.deleteMethod();
value1 = myClass.value1
value2 = myClass.Value2
value3 = myClass.Value3

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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