关于java stack压栈出错

问题描述

关于java stack压栈出错

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

解决方案

Java之Stack --- 栈
Java 用数组实现栈 (Stack),包括栈的初始化,入栈、出栈等操作
Java 数据结构之 Stack(栈)

解决方案二:

word和sentence你都 没有实例化,要用new

时间: 2024-10-21 17:59:09

关于java stack压栈出错的相关文章

JAVA Stack栈和Heap堆的区别(转)

      首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆.         在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:        堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management         栈编址: stack addressing   栈变换:stack transformation  栈存

[Java]Stack栈和Heap堆的区别(终结篇)[转]

首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆.         在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:        堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management         栈编址: stack addressing   栈变换:stack transformation  栈存储器:sta

用Java代码实现栈数据结构的基本方法归纳_java

链式实现: 在栈的一段添加和删除元素,在栈中维护一个指向栈顶的结点和一个count变量指示栈的大小: private LinearNode top; //指向栈顶 private int count;//标记栈的大小 每次出栈和压栈在链表的表头:(也可以再表尾,实现方式不一样而已) top--->元素1--->元素2--->元素3......... 实现(附带测试main): LinkedStack package Stack; import Bag.LinearNode; //为了重点

小览call stack(调用栈) (二)——调用约定

在上一篇博客中小览call stack(调用栈) (一)中,我展示了如何在windbg中 观察调用栈的相关信息:函数的返回地址,参数,返回值.这些信息都按照一定 的规则存储在固定的地方.这个规则就是调用约定(calling convention). 调用约定在计算机界不是什么新鲜的概念,已经有许多相关的文献给予详细 的介绍.比较全面的介绍可以参见wikipedia上的相关页面.然而,如果你和我 一样,在第一次接触调用约定的时候,觉得这个概念是个高深神秘的冬冬,那么 就请跟随我一起,在这篇博客中看

谁能解释下&amp;amp;quot;递归的本质就是用压栈与出栈操作&amp;amp;quot;?

问题描述 谁能解释下"递归的本质就是用压栈与出栈操作"? 递归的本质就是用压栈与出栈操作 这句话感觉很有道理啊 解决方案 当递归调用时每次调用自己时可以看做是压栈过程,当递归条件满足结束时,递归一级一级的返回时可以看做是出栈的过程. 解决方案二: 函数调用的本质就是"压栈与出栈操作",递归不过是它的特例,自身调用自身. 解决方案三: 递归可以简单理解为一个大问题分为小问题,然后小问题继续分解,直到能解决,然后几个小问题解决,就是解决一个大问题,金字塔形状最后解决所有

c++ 链栈 出错-c++链栈问题,求大神,大一无力啊

问题描述 c++链栈问题,求大神,大一无力啊 程序运行的时候出错,自己弄了好久不知道怎么办,百度了也不行#include #include using namespace std; enum error_code{success,underflow,overflow}; //定义枚举 char opr[]={'+','-','*','/','(',')','#'}; struct node{ char data0; int data1; node *next; }; int comp[7][7]

【Java数据结构】栈

栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素. 一个char的栈模型类: package cn.deu; public class CharStack { private int MaxSize; private ch

浅谈C语言函数调用参数压栈的相关问题_C 语言

参数入栈的顺序 以前在面试中被人问到这样的问题,函数调用的时候,参数入栈的顺序是从左向右,还是从右向左.参数的入栈顺序主要看调用方式,一般来说,__cdecl 和__stdcall 都是参数从右到左入栈. 看下面的代码: #include <stdio.h> int test(int a, int b) { printf("address of a %x.\n", &a); printf("address of b %x.\n", &b)

java-jacob c++里方法的类型是bstr ,为啥JAVA调用时老是出错

问题描述 jacob c++里方法的类型是bstr ,为啥JAVA调用时老是出错 [id(4)] HRESULT sayHello2([in] BSTR say, [out, retval] BSTR* result); ComThread.InitMTA(true); ActiveXComponent com = new ActiveXComponent("CLSID:FF90EFCA-0856-4159-A9CC-0E7BBC317554") ; Dispatch disp = (