繁体   English   中英

在Java中为实例变量访问局部变量的值

[英]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内部的循环中,您要同时增加xamount 因此,如果x < amount ,则x < amount -至少直到amount达到MAXINT总是如此。

我强烈建议学习使用调试器。 您将立即发现此错误。

while(x < amount)

将返回false ,因为xamount在开始时均为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM