考虑这个课程:
belongs_to :intellectual_object
belongs_to :generic_file
在我的主要内容中我这样做:
public class Save extends Application {
public int num1;
public int count;
public Save(int n1){
num1=n1;
count=1;
}
public int getcount()
{
return (count);
}
}
现在 new Save(15);
Integer result = new Save().getcount();
的值应为1,而result
则为0.
答案 0 :(得分:1)
在第2行中,您正在初始化Save
的新实例,而不是使用之前在第1行初始化的实例。
你可以这样引用前一个:
...
Save mySave = new Save(15);
Integer result = mySave.getcount();
答案 1 :(得分:1)
我不确定你是如何编译的,因为它会报告你没有将正确数量的参数传递给构造函数,但是为什么(假设)发生这种情况的解释如下:
考虑您的代码行:
Integer result = new Save().getcount();
由于你永远不会通过传递参数给count
赋予任何值,因此它的默认值为0,因为字段具有默认值,而且整数为0。还要注意这一行:
new Save(15);
什么都不做。它创建一个新的Save
对象,然后立即将其标记为垃圾收集,因为没有对它的引用。您可能想要为构造函数传递参数,如下所示:
Integer result = new Save(SOME_NUMBER).getcount(); //result is 1
这将正确调用构造函数并将count
初始化为1。
根据您的代码,我假设您希望count
变为静态,因为您想要计算您的课程实例的数量:
public static int count;
...
public static int getCount() { //Follow Java conventions - use camelCase
return count;
}
...
//In main
new Save(15);
Integer x = Save.getCount(); //1 instance
答案 2 :(得分:0)
所以这是你的问题
new Save(15);
Integer result = new Save().getcount();
应该是
Save save = new Save(15);
Integer result = save.getcount();
或
Integer result = (new Save(15)).getcount();
当您获得计数初始化为0时,您进行新的保存。您应该保留一个保存实例。
答案 3 :(得分:0)
您提供的代码将无法编译。因为Save类定义了一个构造函数并且只接受一个参数。这将删除默认构造函数。因此new Save()
行会出现编译错误。
我的猜测是,您正在寻找计算创建Save对象的时间(在这种情况下,应该完成count ++)或者您正在尝试检查Save对象是否至少创建一次(使用整数1为布尔值true)
在任何一种情况下,count
字段和getCount()
方法都应声明为静态。并使用Save.getCount()
调用该方法。
我添加了工作代码,用于计算在此java online compiler ide - codiva中创建Save对象的次数。
PS:如果我对你想要的东西的理解不正确,请澄清你想要达到的目标。通过将代码段包含在http://ideone.com或https://www.codiva.io 3>等在线Java中,也可以让其他人轻松获得帮助