我编写了一些小的java代码,并希望在其他方法中使用我在main方法中创建的同一个对象。有什么办法吗?我不希望每次在Checklength方法中创建新对象只是为了调用digitSum。我想使用在main方法中创建的相同对象。
注意:不更改方法属性
public class UserMainCode {
public int digitSum(int input1) {
int num = input1;
int sum = 0;
int output = 0;
int length = 0;
while (num > 0) {
sum = sum + num % 10;
num = num / 10;
}
output = sum;
length = Integer.valueOf(Integer.toString(output).length());
Checklength(length, output);
return length;
}
public static void Checklength(int length, int sum) {
if (length > 1) {
UserMainCode b = new UserMainCode();
b.digitSum(sum);
}
else {
System.out.println(sum);
}
}
public static void main(String[] args) {
UserMainCode o = new UserMainCode();
o.digitSum(976592);
}
}
有什么想法吗?
答案 0 :(得分:0)
在这种情况下要做的是从static
方法中删除checklength
。 static
表示该方法属于类级而不是实例级。如果删除它,checklength
将返回实例级别,并且可以在同一个实例上调用digitSum
(可以通过关键字this
显式访问)。 / p>
public class UserMainCode {
public int digitSum(int input1) {
int num = input1;
int sum = 0;
int output = 0;
int length = 0;
while (num > 0) {
sum = sum + num % 10;
num = num / 10;
}
output = sum;
length = Integer.valueOf(Integer.toString(output).length());
Checklength(length, output);
return length;
}
public void checklength(int length, int sum) {
if (length > 1) {
// deleted instance b - we don't need it
digitSum(sum); // implicitly means this.digitSum(sum);
}
else {
System.out.println(sum);
}
}
}
所有这些操作现在都发生在main方法中创建的实例上。