[英]Accessing value of local variable for an instance variable in java
我查了一下,但没发现什么。 这是代码:
public class Core {
int amount = 0;
public void startup(int Items) {
int x = 0;
System.out.println("Welcome Back,");
while(x < amount) {
amount++;
x++;
}
}
agendaitem[] item = new agendaitem[150];
public void instantiate(String name, String status, String comments,int i) {
item[i] = new agendaitem();
item[i].name = name;
item[i].complete = status;
item[i].comments = comments;
}
public void error(String reason) {
System.out.println("Error"+reason);
}
public void setitem(String input) throws Exception {
Interface interf = new Interface();
System.out.println(amount);
int x = 0;
while(x < amount) {
interf.inputb(item[amount].name);
break;
}
}
public void setstatus() {
}
public void rename() {
}
public void delete() {
}
}
基本上,我需要设置可变量的值,使其与方法启动时的Items值相同。 然后,我需要从方法setitem访问数量。 但是无论出于什么原因,即使我通过运行启动将值设置为2,setitem也会将数量视为0。 有什么建议吗? 谢谢。 :)
在startup
内部的循环中,您要同时增加x
和amount
。 因此,如果x < amount
,则x < amount
-至少直到amount
达到MAXINT
总是如此。
我强烈建议学习使用调试器。 您将立即发现此错误。
while(x < amount)
将返回false
,因为x
和amount
在开始时均为0,因此amount
将始终保持0值。 为什么不只是做
amount = items
?
您的startup
方法如下所示。
public void startup(int Items) {
amount = Items;
}
顺便说一句,遵循Java命名约定, Items
应该称为items
,camelCase。
我认为您可能要寻找的是在Core类中使“ amount”成为静态变量。 这将涉及如下声明:
static int amount = 0;
有关信息,请参见此处: http : //docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.