0

util パッケージが提供する組み込みクラスを使用せずに Java でスタックを作成したい。このコードを書きましたが、実行するたびに NullPointerException がスローされます。2クラス作りました。スタックのメソッドとロジック、つまりプッシュとポップ、およびスタックの空とフルをチェックするメソッドを含む最初のもの。

private int MaxStack;
private int emptyStack;
public static int top;
private char[] items;

public SimpleStack(int i) {
    // TODO Auto-generated constructor stub
}

public void Stack(int i)
{
    MaxStack=i;
    emptyStack=-1;
    top=emptyStack;
    items=new char[MaxStack];
}
public void Push( char c){

 items[top]=c;
 top++;}
public char Pop(char c){

 return items[top--];}
public boolean full(){

 return top+1==MaxStack;}
public boolean empty(){

return top== emptyStack;}}

2 番目のクラスには、コードを実行するための main メソッドが含まれています。

public static void main(String[] args) throws IOException
{
    // TODO Auto-generated method stub
SimpleStack ab=new SimpleStack(10);
char ch;

while((ch= (char)System.in.read())!='\n')
{   

    if(!ab.full()){
        ab.Push(ch);
        }
        }
while(!ab.empty())
{
System.out.println(ab.Pop(ch));
System.out.println();
}


}
}
4

3 に答える 3

4

問題は、コンストラクターが何もしないことです。

public void Stack(int i)代わりにコンストラクターである必要がある別のメソッドがあるようです。

util パッケージが提供する組み込みクラスを使用せずに Java でスタックを作成したい。

それでも、組み込みの Stack クラスのコードを読むと、標準の書式設定やコーディング規則の使用など、役立つことを学ぶことができます。

于 2012-10-08T12:50:39.610 に答える
0

Stack(int)のロジックをSimpleStack(int)に移動してみてください

于 2012-10-08T12:49:52.180 に答える
0

他の人が述べているように、コンストラクターは何もしていません。しかし、私が目にするもう 1 つの問題は、ロジックを Stack(int) から SimpleStack(int) に移動しても、int の "top" を "emptyStack" (-1) に設定していることです。したがって、アイテムを配列にプッシュするとき、最初はそれをアイテム [-1] にプッシュしようとしていますが、これは明らかにエラーをスローします。コードを 1 行ずつ注意深く見ていくと、何が起こっているのかを正確に確認できます。

于 2012-10-08T13:54:38.937 に答える