0

我查了这个,但没有找到太多。这是代码:

    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() {

        }
    }

基本上我需要设置变量 amount 的值,使其与方法启动时 Items 的值相同。然后我需要从方法 setitem 访问金额。但无论出于何种原因,setitem 将数量视为 0,即使在我通过运行启动将值设置为 2 之后也是如此。有什么建议吗?谢谢。:)

4

3 回答 3

1

在里面的循环里面startup,你同时增加xamount。因此,如果x < amount,那么情况总是如此x < amount——至少在amount到达之前是这样MAXINT

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

于 2013-09-09T20:27:12.463 回答
0
while(x < amount)

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

amount = items

?

你的startup方法看起来像这样。-

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

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

于 2013-09-09T20:10:42.777 回答
0

我认为您可能正在寻找的是在您的核心类中使“金额”成为静态变量。这将涉及如下声明:

static int amount = 0;

有关信息,请参见此处:http: //docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

于 2013-09-09T20:32:54.360 回答