角色不会跻身筹码榜首?

时间:2014-04-22 19:00:40

标签: java

因此,对于这个项目,我们有自己的预编程类来创建堆栈,我们需要使用这个类来创建和使用堆栈,而不是已经附带Java的Stacks类。我遇到的问题是,当我将角色推到堆栈顶部时它仍然是空的,你知道为什么会发生这种情况吗?

这是我们用于推送

的stacks类中的代码

StackOfCharacters.java(推送方法):

/**
 * Puts the character value at the top of the stack.
 * @param value adds specified character to the stack
 */
public void push ( Character value )
{
    //if the stack is full, allocate a larger array
    if (  full() )
        makeLarger();
    //add the new value to the top of the stack
    if (value != null) {
        list[size] = value;
        size++;
    }
}

但是当我打电话时,它会显示为空

balance.java

public void isBalanced(String x){

    char d = x.charAt(1);
    System.out.println(d);

    new StackOfCharacters();
    new StackOfCharacters().push(x.charAt(1));
    System.out.println(new StackOfCharacters().peek());
    System.out.println(new StackOfCharacters().empty());

}

主要课程:

    Scanner input = new Scanner(System.in);
    System.out.print("Type a string to Balance Check: ");
    String s = input.nextLine();  // input String
    System.out.println();

    new BalanceChecks().isBalanced(s);

StackOfCharacters.java文件在编码时应该是100%正确的我只是为什么一切都在工作,但是推动它?

谢谢!

3 个答案:

答案 0 :(得分:1)

您始终在创建新对象,而不是使用相同的对象。创建类的实例并将字符推送到此实例: - )

StackOfCharacters soc = new StackOfCharacters();
soc.push(1);
System.out.println(soc.peek());

答案 1 :(得分:0)

继续使用相同的StackOfCharacters实例:

public void isBalanced(String x){

    char d = x.charAt(1);
    System.out.println(d);

    StackOfCharacters s = new StackOfCharacters();
    s.push(d);
    System.out.println(s.peek());
    System.out.println(s.empty());

}

答案 2 :(得分:0)

您正在创建新的StackOfCharacters而不是推送/偷看到同一个。

public void isBalanced(String x){

    char d = x.charAt(1);
    System.out.println(d);

    StackOfCharacters thisStack = new StackOfCharacters();
    thisStack.push(x.charAt(1));
    System.out.println(thisStack.peek());
    System.out.println(thisStack.empty());

}