当前位置: 代码迷 >> Java相关 >> 超级新手!求援!一个简单的问题!请帮忙修正错误!3Q
  详细解决方案

超级新手!求援!一个简单的问题!请帮忙修正错误!3Q

热度:301   发布时间:2007-03-05 13:45:09.0
超级新手!求援!一个简单的问题!请帮忙修正错误!3Q

本人刚刚开始学JAVA编程 老师给留的作业,我遇到了一个小问题,请大侠帮忙!3Q
是压栈弹栈的程序!
以下代码的运行时错误(开发工具是MyEclipse5.1)
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at stacklx.Stack.inStack(Stack.java:18)
at stacklx.Test.main(Test.java:24)
错误的代码分别是下面//*******************************的行!

/////////////////////请问怎么才能把错误修正啊?////////////////////////

package stacklx;
public class Stack {
private int i;
public Stack(int a) {
i = a;
}
private String[] stack = new String[i];
private int top = -1;
public void inStack(String x) {
if (fullStack()) {
System.out.println("栈已满,不能在压栈了!");
} else {
top++;
stack[top] = x; //**************************************************
System.out.println("压入数据:" + x);
}
}
public void outStack() {
if (emputyStack()) {
System.out.println("栈已空,不能在弹栈了!");
} else {
String temp = stack[top];
stack[top] = null;
top--;
System.out.println("弹出数据:" + temp);
}
}
public boolean emputyStack() {
if (top == -1) {
return true;
} else {
return false;
}
}
public boolean fullStack() {
if (top == i-1) {
return true;
} else {
return false;
}
}
public int showTop() {
return top;
}
public String showTopData() {
if (emputyStack()) {
return null;
} else {
return stack[top];
}
}
}
下面的是测试类!

package stacklx;
public class Test {
public static void main(String[] args) {
Stack stack=new Stack(8);
//Stack stack=new Stack();
// if(stack.emputyStack()){
// System.out.println("是空栈!");
// }else{
// System.out.println("不是空栈!");
// }
// if(stack.fullStack()){
// System.out.println("是满栈!");
// }else{
// System.out.println("不是满栈!");
// }
for(int i=0;i<15;i++){
String a=""+i;
stack.inStack(a); //******************************************************
}
System.out.println(stack.showTop());
System.out.println(stack.showTopData());
for(int i=0;i<15;i++){
stack.outStack();
}
System.out.println(stack.showTop());
System.out.println(stack.showTopData());
}
}
-------------------------------------------------------------------------------
http://bbs.bc-cn.net/viewthread.php?tid=131674 JPanel添加键盘事件

http://bbs.bc-cn.net/viewthread.php?tid=11146 JAVA起步篇


http://bbs.bc-cn.net/viewthread.php?tid=131690 JAVA中JInternalFrame位置设置

http://bbs.bc-cn.net/viewthread.php?tid=131308 请问字符串如何转换成16进制?

http://bbs.bc-cn.net/viewthread.php?tid=130806 学习java的30个目标

http://bbs.bc-cn.net/viewthread.php?tid=131234 Java精华积累:每个初学者都应该搞懂的问题!

http://bbs.bc-cn.net/viewthread.php?tid=89608 课堂笔记学习java(初级)

http://bbs.bc-cn.net/dispbbs.asp?boardid=8&replyid=96344&id=130228&page=1&skin=0&star=1 Integer的问题

http://bbs.bc-cn.net/viewthread.php?tid=126568 Swing窗口程序中加入URL

http://bbs.bc-cn.net/dispbbs.asp?boardid=8&replyid=152996&id=140521&page=1&skin=0&star=1
90天学J2SE经验浅谈 附带各板块学习作品原码
http://bbs.bc-cn.net/dispbbs.asp?boardid=8&replyid=156397&id=141585&page=1&skin=0&star=1
JavaSE GUI 编程的一个例子
http://bbs.bc-cn.net/viewthread.php?tid=141632&extra=&page=1 一起来玩JavaFX

http://bbs.bc-cn.net/viewthread.php?tid=124249 java的内存模型

http://bbs.bc-cn.net/viewthread.php?tid=171462 关于算法的一个例子

[此贴子已经被作者于2007-10-7 1:03:53编辑过]

搜索更多相关的解决方案: 求援  超级  

----------------解决方案--------------------------------------------------------
我只知道是数组的问题~~~~~
----------------解决方案--------------------------------------------------------

怎么改呢?


----------------解决方案--------------------------------------------------------
stack创建用的是未初始化的i值,长度为0的数组,当然不能修改stack[top]。

Stack类的初始化方法应该有长度为i的stack字符串数组的创建。

private int i;
private String[] stack;

public Stack(int a) {
i = a;
stack= new String[i];
}


[此贴子已经被作者于2007-3-5 15:50:02编辑过]


----------------解决方案--------------------------------------------------------

谢谢4楼的提示!
问题已经解决了!
要是这样的话那个private int i;就没有什么用了
我直接把Stack(int a)的形参写到new String[a]中了
多谢你了!


----------------解决方案--------------------------------------------------------

厉害 ,我也学了一招


----------------解决方案--------------------------------------------------------
  相关解决方案