请帮我解决我的问题。我如何得到总和值?
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);
}
}
答案 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
的值sumVar
和5
打印为e.toString()
的值。然后,我们需要打印1 + sum
并使用这两种方法,我们会看到它打印1 + sumVar
= 6
和1 + 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);