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

时间:2013-09-09 20:07:23

标签: java variables instance local

我看了这个,但没找到多少。这是代码:

    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。有什么建议?谢谢。 :)

3 个答案:

答案 0 :(得分:1)

startup内的循环内,您正在递增xamount。因此,如果x < amount,则始终是x < amount的情况 - 至少在amount到达MAXINT之前。

我强烈建议您学习使用调试器。你会立即发现这个错误。

答案 1 :(得分:0)

while(x < amount)

将返回false,因为xamount在开头都是0,因此amount将始终保持0值。为什么不做呢

amount = items

您的startup方法看起来像这样.-

public void startup(int Items) {
    amount = Items;
}

顺便说一句,遵循java命名约定,Items应该被称为items,camelCase。

答案 2 :(得分:0)

我认为您可以寻找的是将“amount”作为Core类中的静态变量。这将涉及声明如下:

static int amount = 0;

请参阅此处获取信息:http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html