关于java stack压栈出错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于java stack压栈出错

2016-03-19 14:45:42 1663 1
public class ReverseString {
Stack word;
Stack sentence;
    public void reverse(String sentence){
        for(int i=0; i<sentence.length(); i++){
            char n =sentence.charAt(i);

            if(n!=' '){
                word.push(n);
            }else{
                while(!word.empty()){
                    this.sentence.push(word.pop());
                }
                this.sentence.push(' ');
            }
        }
    }

    public void show(){
        while(!this.sentence.empty()){
            System.out.println(this.sentence.pop());
        }
    }
    public static void main(String[] args) {
        new ReverseString().reverse("the sky is blue");
    }
}

想不明白为何在执行word.push(n)时 会报 java.lang.NullPointerException

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:08:15

    栈是后进先出,只要记住这一点,就不难实现。下面是我的实现:

    /**
     * StackByArray:数组方式实现栈,实现栈的初始化,入栈出栈操作
     * 
     * @author zeng.xiangdong 1770534116@qq.com
     * @version V1.0 2014-8-24 下午10:00:03
     */
    public class StackByArray {
    
        // 栈的长度
        private int length;
        // 栈
        private Object[] array;
        // 栈顶的下标
        private int topIndex = -1;
    
        /**
         * StackByArry:构造方法
         * 
         * @param length 初始化栈的长度
         */
        public StackByArray(int length) {
            this.length = length;
            array = new Object[length];
        }
    
        /**
         * push:入栈
         * 
         * @param obj
         * @throws Exception
         */
        private void push(Object obj) throws Exception {
            if(isFullStack()) {
                throw new Exception("栈已满");
            }
            array[++topIndex] = obj;
        }
    
        /**
         * offer: 出栈,取出栈顶元素
         * 
         * @return obj
         * @throws Exception
         */
        private Object offer() throws Exception {
            if(isEmptyStack()) {
                throw new Exception("栈已空");
            }
    
            Object topObject = array[topIndex];
            array[topIndex] = null;
            topIndex--;
            return topObject;
        }
    
        /**
         * isEmptyStack:判断栈是否为空
         * 
         * @return
         */
        private boolean isEmptyStack() {
            return (topIndex == -1);
        }
    
        /**
         * isFullStack:判断栈是否已满
         * 
         * @return
         */
        private boolean isFullStack() {
            return topIndex == (length - 1);
        }
    
        /**
         * getLength:取得栈内的数据长度
         * 
         * @return length
         */
        private int getLength() {
            return topIndex + 1;
        }
    
        /**
         * outPut:栈内容输出
         */
        private void outPut() {
            for(Object obj : array) {
                if(obj != null) {
                    System.out.print(obj + ", ");
                }
            }
    
            System.out.println();
        }
    
        /**
         * main:(这里用一句话描述这个方法的作用)
         * 
         * @param args
         */
        public static void main(String[] args) throws Exception {
            StackByArray stack = new StackByArray(10);
    
            for(int i = 1; i <= 8; i++) {
                stack.push(i);
                stack.outPut();
            }
    
            System.out.println("---------------");
            System.out.println(stack.offer());
            stack.outPut();
            System.out.println("---------------");
            System.out.println(stack.offer());
            stack.outPut();
    
            System.out.println(stack.getLength());
        }
    }
    0 0
相关问答

0

回答

请问java性能问题:如何优化向HashMap插入元素的速度?

2021-11-12 17:18:18 134浏览量 回答数 0

0

回答

请问java中使用BigDecimal计算操作性能最优的做法是什么?

2021-11-07 15:42:19 211浏览量 回答数 0

1

回答

java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-06 16:21:40 167浏览量 回答数 1

0

回答

您好java性能问题:有没有比较字符串是否相等的最快方法?

2021-11-07 00:39:14 143浏览量 回答数 0

1

回答

java性能问题:如何优化向HashMap插入元素的速度?

2021-11-06 15:41:34 212浏览量 回答数 1

0

回答

请问java中常用的性能调优诊断工具都有哪些,请帮忙提供一下?

2021-11-06 22:35:44 85浏览量 回答数 0

1

回答

java中常用的性能调优诊断工具都有哪些,请帮忙提供一下?

2021-11-06 10:24:39 158浏览量 回答数 1

1

回答

java中使用BigDecimal计算操作性能最优的做法是什么?

2021-11-06 16:35:15 226浏览量 回答数 1

1

回答

java中ArrayBlockingQueue与DoubleBufferedQueue哪个性能更高?

2021-11-06 21:47:49 205浏览量 回答数 1

1

回答

java中DoubleBufferedQueue与ArrayBlockingQueue哪个性能更高?

2021-11-06 21:50:01 184浏览量 回答数 1
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载