方法变量范围(java)

时间:2012-11-19 20:41:47

标签: java scope

我在java中有一个方法类。基本上这个类接收一个整数数组,添加数字&也减去它们,返回总和和减法。我将变量声明在顶部(不是在特定方法中)。当减法和加法完成时,它们被分配给它们各自的变量(当然是自动),但是当方法完成它的工作时,值被删除,所以当我调用减法/加法的方法时,结果是一个0.

据我所知,值不应为空,因为它们不是在方法内部初始化,而是在所有方法之外,因此范围不应该结束。有什么帮助吗?

//方法类

    package chap3;

    import javax.swing.JOptionPane;

    /**
    *
    * @author jtech
    */
    public class SimpleArithmeticMethods
    {
   int sum;
   int subtraction;

public void sum_Difference(int[] nums)
{        
    int[] inpNums = nums; 

    sum = inpNums[0] + inpNums[1];
    subtraction = inpNums[1] - inpNums[0]; 

}

public void getSum()
{
     JOptionPane.showMessageDialog(null,"The sum is: "+sum, "Result.", JOptionPane.INFORMATION_MESSAGE);
}

public void getDifference()
{
    JOptionPane.showMessageDialog(null,"The difference is: "+subtraction, "Result.", JOptionPane.INFORMATION_MESSAGE);
}

}    

我运行的课程

 package chap3;

 import javax.swing.JOptionPane;

 /**
  *
 * @author jtech
 */
public class SimpleArithmetic 
{

  public static void main(String[] args)
  {
    String[] strInptNums = new String[2];
    int[] inptNums = new int[2];         

    SimpleArithmeticMethods obtainSum = new SimpleArithmeticMethods();
    SimpleArithmeticMethods obtainDifference = new SimpleArithmeticMethods();
    SimpleArithmeticMethods workSum_Difference = new SimpleArithmeticMethods();

    for (int counter = 0; counter <= 1; counter++)
    {
        strInptNums[counter] = JOptionPane.showInputDialog(null, "Input a number, smallest first", "Input Data.", JOptionPane.QUESTION_MESSAGE);
        inptNums[counter] = Integer.parseInt(strInptNums[counter]);
    }        

    workSum_Difference.sum_Difference(inptNums);
    obtainSum.getDifference(); 
    obtainDifference.getDifference();
  }
}

1 个答案:

答案 0 :(得分:1)

您在一个对象上调用sum_Difference()方法,并使用另一个对象显示结果。

这就像在瓶子中存储消息,然后查看消息是否在另一个瓶子中。使用相同的对象来调用所有三种方法。