我想知道如何以及是否可以在函数内定义变量并在每次调用中累积其值。例如:
public int foo(int num, int cost){
int sum;
sum += num*cost;
System.out.println("all costs are "+ sum);
return sum;
}
我希望变量sum
从一个调用到另一个调用来累积其值,以便进行以下调用:
foo(5,3);
foo(2,8);
将打印此输出:
all costs are 15
all costs are 31
我可以用Java做到这一点吗?如果是,那我该怎么做。 很抱歉,我不知道我要实现的概念。我知道其他语言也可以做到。
答案 0 :(得分:1)
每次调用方法new object of type int
时,您正在创建具有相同名称sum
的{{1}}。这样,您正在创建新对象时,先前的值将被覆盖。
但是您想保存该值以备后用。因此,要实现此目的,您必须更改变量的foo()
并在函数外部声明它。因此,每种方法都可以使用它,并且可以保存其以前的值。
工作代码:
scope
注意::在打印中,您使用的是public class stackInt
{
public static int sum=0; // now every method can access this variable
public static void main(String[] args)
{
foo(5,3);
foo(2,8);
}
// according to your output you dont have to set return type as "int"
public static void foo(int num, int cost)
{
sum += num*cost;
System.out.println("all costs are "+ sum);
//return sum; as you have printed the output what you want, so, no need to return "sum"
}
}
,但根据输出,它应该是cost
,如果您的目标是返回sum
只是打印出来。
答案 1 :(得分:0)
在Java中,您可以在类上添加变量,使其看起来像这样:
int sum=0;
public int foo(int num, int cost){
sum += num*cost;
System.out.println("all costs are "+ cost);
return sum;
}
该变量将仅对您在foo方法所在的类中创建的每个实例进行重置
如果您也想在不同实例之间持久保存它,则可以
static int sum=0;
代替
答案 2 :(得分:0)
您要做的是在函数外部创建一个全局变量,以跟踪该变量。
赞:
private int sum = 0;
public int foo(int num, int cost){
sum = sum + num * cost;
System.out.println("all costs are "+ cost);
return sum;
}
如果您在方法内部定义int sum;
,则每次调用该方法时,都会覆盖该变量,这不是您所需要的变量。