| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 287 人关注过本帖
标题:超级新手!求援!一个简单的问题!请帮忙修正错误!3Q
收藏  订阅  推荐  打印 
beyond_p
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1240
注册:2007-1-17
超级新手!求援!一个简单的问题!请帮忙修正错误!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编辑过]

搜索更多相关主题的帖子: 求援  超级  
2007-3-5 13:45
剃头刀
Rank: 1
等级:新手上路
帖子:10
积分:200
注册:2007-3-3

我只知道是数组的问题~~~~~
2007-3-5 14:59
beyond_p
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1240
注册:2007-1-17

怎么改呢?


越是深入的学习,就越来越感觉到自己知道的太少了...
2007-3-5 15:15
fox000002
Rank: 1
等级:新手上路
帖子:22
积分:320
注册:2005-4-9

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编辑过]


2007-3-5 15:44
beyond_p
Rank: 2
等级:注册会员
威望:1
帖子:114
积分:1240
注册:2007-1-17

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


越是深入的学习,就越来越感觉到自己知道的太少了...
2007-3-5 15:56
剃头刀
Rank: 1
等级:新手上路
帖子:10
积分:200
注册:2007-3-3

厉害 ,我也学了一招

2007-3-5 16:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.065600 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved