如何获得总和值

时间:2013-06-27 19:15:08

标签: java

请帮我解决我的问题。我如何得到总和值?

public class Exe {
    int sum;
    public int sumAB(int a,int b) {
        sum=a+b;
        return sum;
    }
}

public class Test {
    public static void main(String[] args){
        Exe e= new Exe();
        e.sumAB(2,3);
        System.out.println(e);
    }
}

4 个答案:

答案 0 :(得分:5)

您需要使用变量来保存方法返回的值的结果。代码有评论提供正确的解释。另请注意,我正在使用sumVar变量来显示{strong>它不是Exe类中的同一个变量,尽管它将具有相同的值

public class Test {
    public static void main(String[] args){
        Exe e= new Exe();
        //declaring variable sumVar
        int sumVar;
        //assigning the value returned of e.sumAB into the sumVar variable
        sumVar = e.sumAB(2,3);
        //printing the value of sumVar
        System.out.println(sumVar);
    }
}

请注意,在此代码中,我打印sumVar类中具有相同sum字段值的Exe变量的结果。可以通过覆盖toString类中的Exe方法来完成另一个解决方案:

public class Exe {
    int sum;
    public int sumAB(int a,int b) {
        sum=a+b;
        return sum;
    }
    @Override
    public String toString() {
        return Integer.toString(sum);
    }
}

public class Test {
    public static void main(String[] args){
        Exe e= new Exe();
        e.sumAB(2,3);
        //this method will automatically call e.toString for you
        System.out.println(e);
    }
}

请注意,toString方法更多用于提供信息,而不是单个字段属性值处理。什么?我的意思是toString方法最常用于显示对象的当前状态,而不是用于返回字段的值。我们在一个例子中看到这个:

public class Exe {
    int sum;
    public int sumAB(int a,int b) {
        sum=a+b;
        return sum;
    }
    @Override
    public String toString() {
        return Integer.toString(sum);
    }
}

public class Test {
    public static void main(String[] args){
        Exe e= new Exe();
        int sumVar;
        sumVar = e.sumAB(2,3);
        //print the value of sum
        System.out.println(sumVar);
        //print the value of sum using e.toString()
        System.out.println(e);
        //now, printing the result of adding 1 to sum
        System.out.println(1 + sumVar);
        //since you're adding a number you have to explicitly use toString() method
        System.out.println(1 + e.toString());
    }
}

结果:

5
5
6
15

在上一个代码示例中,我们会看到它将5的值sumVar5打印为e.toString()的值。然后,我们需要打印1 + sum并使用这两种方法,我们会看到它打印1 + sumVar = 61 + e.toString() = 15。为什么?因为在向String添加任何内容时,它会将其连接起来,而15是将1连接到5的结果。

简而言之:最好使用变量来保存方法返回的值的结果。

答案 1 :(得分:2)

只是为了好玩,一种替代(如果有点奇怪)的方法似乎与OP的原始思路相匹配。覆盖toString中的Exe将使测试代码按预期执行。

public class Exe {
    int sum;
    public int sumAB(int a,int b) {
        sum=a+b;
        return sum;
    }

    public String toString() {
        return String.valueOf(sum);
    }
}

说明:将对象传递给print方法时,print方法通过调用对象的String方法将该对象转换为toString。如果您的对象没有显式实现toString(或从一个类继承),这将导致调用Object#toString。这很少特别有用,因为它只是打印出对象的类和哈希码。通过显式定义toString方法,您可以获得OP似乎期望的行为。

正如我在答案开头所说,这种做法有点异想天开。有关更合理的方法,请参阅其他答案。

答案 2 :(得分:0)

public static void main(String[] args){
    Exe e= new Exe();
    int sum = e.sumAB(2,3);
    System.out.println(sum);
}

或者直接打印值而不分配变量

 public static void main(String[] args){
    Exe e= new Exe();
    System.out.println(e.sumAB(2,3));
}

答案 3 :(得分:0)

您可以从外部访问实例的字段,除非它们是私有的。

public class Exe {
   int sum;
   (...)

System.out.println(e.sum);