Java 如何求和值
请帮我解决我的问题。我如何得到和值Java 如何求和值,java,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);
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);
}
}
或者直接打印值而不指定变量
public static void main(String[] args){
Exe e= new Exe();
System.out.println(e.sumAB(2,3));
}
您需要使用一个变量来保存方法返回的值的结果。代码中有提供适当解释的注释。另外,请注意,我正在使用
sumVar
变量来显示它与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
变量的结果,该变量在Exe
类中具有相同的sum
字段值。另一种解决方案是重写Exe
类中的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();
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
。为什么?因为当向字符串添加任何内容时,它会将其连接起来,15
是将1
与5
连接起来的结果
简而言之:最好使用一个变量来保存方法返回的值的结果。只是为了好玩,这是一种与OP的原始思路相匹配的替代方法(如果有点奇怪)。在Exe
中重写toString
,将使测试代码按预期执行
public class Exe {
int sum;
public int sumAB(int a,int b) {
sum=a+b;
return sum;
}
public String toString() {
return String.valueOf(sum);
}
}
解释:将对象传递给打印方法时,打印方法通过调用对象的toString
方法将该对象转换为字符串。如果您的对象没有显式实现toString
(或从实现的类继承),这将导致调用object\toString
。这很少特别有用,因为它只是打印出对象的类和散列代码。通过显式定义toString
方法,您可以获得OP似乎期望的行为
正如我在回答开始时所说的,这种方法有些异想天开。有关更合理的方法,请参阅其他答案。您可以从外部访问实例的字段,除非这些字段是私有的
public class Exe {
int sum;
(...)
System.out.println(e.sum);
查看toString()
方法以及调用方法和方法返回类型。您可能希望首先参考Java教程。欢迎使用SO。既然你是新来的,你就应该参加考试。我还建议读一些。@SotiriosDelimanolistoString
方法与此无关=\@SotiriosDelimanolis我的问题是如何获取此的总和值您需要从sumAB
方法恢复sum
而不是使用toString
方法。当然,使用toString
是一种可能的解决方案,但不是最准确的方法。请使用不同的标识符。不要让他认为你说的是与Exe
@SteveP中相同的sum
。你的意思是对sum
使用不同的名称?是的。我发现初学者容易混淆变量的范围/认为标识符在某些情况下必须相同。@SteveP。答案更新并添加了正确的解释。+1
@Luiggi Mendoza,我看到了。请参阅解释部分。
public class Exe {
int sum;
(...)
System.out.println(e.sum);