在Java中的方法之间共享多个变量

时间:2014-04-30 01:00:20

标签: java

在方法之间传递多个变量的最佳方法是什么?我已经在第一种方法中有一种返回语句,但是我希望从第二种方法中的第一种方法访问每个变量。变量" value0"在方法" addTasks0"不被承认。

public Integer addValues(){
int value0 = sliderExample.getValue();
int value1 = sliderExample1.getValue();
int value2 = sliderExample2.getValue();
int value3 = sliderExample3.getValue();
int value4 = sliderExample4.getValue();
int value5 = sliderExample5.getValue();
int value6 = sliderExample6.getValue();
int value7 = sliderExample7.getValue();
int totalValue = (value0 + value1 + value2 + value3 + value4 + value5 + value6 +     value7);

return totalValue;
}


public void addTasks0(){      
    Integer totalValue = addValues();

      if (totalValue <= 100) {
      progressBar.setValue(value0);
  }
  else{
      int overkill = (totalValue - 100);
      int margin = (value0 - overkill);
      String taskTitle = inputText.getText();
      String marginmessage = "The maximum priority of " + taskTitle + " is" + Integer.toString(margin) + "%";
      sliderExample.setValue(0);
          //custom title, warning icon
    JOptionPane.showMessageDialog(null, marginmessage, "Check Math", JOptionPane.WARNING_MESSAGE);
  }
}

4 个答案:

答案 0 :(得分:0)

在您的代码中,您显示仍然可以使用sliderExample方法访问addTasks0,因此addValues可以再次访问

int value0 = sliderExample.getValue();
addTasks0方法中的

。您无需传递该值。

但是如果你真的想要,你可以从addValues返回一个int数组,其中arr [0] == value0和arr [1] == totalValue

或者您当然可以将这些变量作为类字段移动

答案 1 :(得分:0)

您可以在类的开头定义变量,以便所有类的方法都可以访问它们。

class ClassName {
    private int value0, value1, value2...;

    public Integer addValues() {
        value0 = sliderExample.getValue();
        value1 = sliderExample1.getValue();
        value2 = sliderExample2.getValue();
        // etc.
    }

    public void addTasks0() {
        Integer totalValue = addValues();

        if (totalValue <= 100) {
            progressBar.setValue(value0)    // Initialized in addValues method
        }

答案 2 :(得分:0)

我会这样做

ArrayList<SliderExample> sliderExamples = new ArrayList<>();

public int addValues() {
    int sum = 0;
    for(SliderExample se: sliderExamples) sum += se.getValue();
    return sum;
}

public void addTask(int taskNr) {
    SliderExample se = sliderExamples.get(taskNr);
    int value = se.getValue();
    ...
}

答案 3 :(得分:0)

您可以尝试传入一个键值对列表,其中每个函数都可以使用特定的键名访问必需的数据

Map<String key,Object value) params;
...
funcA(Map params){
 params.add(somePredefinedKey,newProperty);
...
funcB(params);
}

funcB(Map params){
Object paramA=params.get(somePredefinedKey);

...     }

如果您按顺序通过多个方法传递参数

,这尤其有用