(学生软件开发人员在这里!)
我们(我们的班级)最近使用BlueJ开始了一个新的java主题。这对我来说是全新的,但到目前为止,我很享受和理解它。
我们必须使用包含5个选项的菜单创建垂直堆叠的数组: 1-推 2-流行音乐 3-顶部 4-显示 5-退出
我设法编写了除“Top”之外的所有内容(在堆栈/数组的顶部显示整数)
我的讲师给了我们这个暗示“你可以'流行'然后'推'才能'顶''但我不太确定如何让它工作?
这是我的菜单代码:
public static void main()
{
int option;
Array a = new Array();
String []menuitems = {"1 - Push","2 - Pop","3 - Top","4 - Display","5 - Quit"};
Menu m = new Menu(menuitems,5);
a.add(4);a.add(2);a.add(28);a.add(15);
do
{
clrscr();
option = m.showMenu();
if ( option == 1 )
doPush(a);
if ( option == 2 )
doPop(a);
if ( option == 3 )
doTop(a);
if ( option == 4 )
{
a.display();
pressKey();
}
}
while ( option != 5 );
System.out.println("Done - You Can Now Close");
}
这是我的推送代码:
public static void doPush(Array a)
{
if ( a.isFull() )
{
System.out.print("\nArray Full!");
}
else {
int item;
System.out.print("Enter number to push: ");
item = Genio.getInteger();
if ( a.addToFront(item) == false)
System.out.print("\nArray Is Full!");
System.out.print("\nArray with new value: \n");
a.display();
}
pressKey();
}
这是我的Pop代码:
public static void doPop(Array a)
{
if ( a.isEmpty() ) {
System.out.println("\nArray is Empty!");
pressKey();
return;
}
else
{
int item;
item = Genio.getInteger();
System.out.println("\nArray popped!");
}
pressKey();
}
希望我走在正确的轨道上,任何帮助都会非常感激!
提前致谢。
答案 0 :(得分:0)
我建议在pop()
类本身定义push()
和Array
方法。然后,您可以按如下方式定义top()
:
public int top() {
int topValue = pop();
push(topValue);
return topValue;
}
即。你将它从堆栈中弹出,记下值,然后将其推回堆栈。这不是一个超级高效的实现,但如果这是他的提示,那么我会这样做。
我还建议使用异常,而不是System.out.println()
用于错误条件,并为使用数组的Stack
定义一个特定的类:
public class Stack {
private Array array = new Array();
public int push(int item) {
if (!array.addToFront(item)) {
throw new IllegalStateException("Stack is full");
}
/* TODO: It would be better (more idiomatic) for the Array.addToFront()
* method threw this exception rather than returning a boolean.
*/
}
public int pop() {
assertStackNotEmpty();
// TODO: Remove the item from the front of the array
// and shuffle everything along
return item;
}
public int peek() {
assertStackNotEmpty();
return array.get(0);
}
/**
* Lecturer's suggested implementation of peek()
*/
public int top() {
int item = pop();
push(item);
return item;
}
private void assertStackNotEmpty() {
if (array.isEmpty()) {
throw new EmptyStackException("Stack is empty");
}
}
}