因此,对于这个项目,我们有自己的预编程类来创建堆栈,我们需要使用这个类来创建和使用堆栈,而不是已经附带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%正确的我只是为什么一切都在工作,但是推动它?
谢谢!
答案 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());
}