2016-04-19 10 views
0

私はObjectでスタックを理解しようとしているので、これを入力しましたが、問題は、私が意味することができない、この本当に奇妙なメッセージが出てきたことです。これは、 "スレッドの例外"メイン "java.lang.NoSuchMethodError:Stack.push(Ljava/lang/Object;)V (TestObjectStack.main(TestObjectStack.java:12))"と書かれています。私はそれをgoogledしかし、私はまだ間違って何をしているのか分からない。私はメインメソッドのヘッダーをredidしましたが、それは修正されませんでした。誰かが私が逃している提案や洞察を持っていますか?ありがとう!:Java NoSuchMethodError

public class TestObjectStack 
{ 
public static void main(String[] args) 
{ 
    Object o; 
    Stack test = new Stack(); 

    test.push("Fred"); 
    test.push(20); 
    test.push(new ThingB("Barney", 42)); 

    Stack copy = new Stack(test); 

    System.out.println("Stack test: " + test); 
    System.out.println(test.pop()); 
    System.out.println("Stack test: " + test); 
    System.out.println("Stack copy: " + copy); 
    if(test.isEmpty()) System.out.println("Empty"); 

    o = test.pop(); 
    System.out.println(o); 
    if(o instanceof String) 
    { 
     String s = (String) o; 
     System.out.println("String length = " + s.length()); 
    } 
    else 
     System.out.println("Not a String"); 
    if(test.isEmpty()) System.out.println("Empty"); 

    o = test.pop(); 
    System.out.println(o); 
    if(o instanceof String) 
    { 
     String s = (String) o; 
     System.out.println("String length = " + s.length()); 
    } 
    else 
     System.out.println("Not a string"); 
    if(test.isEmpty()) System.out.println("empty"); 
} 
} 

class ThingB 
{ 
private String _name; 
private int _ID; 

public ThingB(String name, int ID) 
{ 
    _name = name; 
    _ID = ID; 
} 

public String toString() 
{ 
    return "Thing B - name - " + _name + " ID = " + _ID; 
} 
} 

class Stack 
{ 
private Object[] _store; 
private int _top; 
private static final int MAXSIZE = 50; 

public Stack() 
{ 
    _store = new Object[MAXSIZE]; 
    _top = 0; 
} 

public Stack(Stack other) 
{ 
    _store = new Object[other._store.length]; 
    _top = other._top; 
    for(int i = 0; i < _top; ++i) 
    { 
     _store[i] = other._store[i]; 
    } 
} 

public boolean isEmpty() 
{ 
    return (_top == 0); 
} 

public void push(Object item) 
{ 
    if(_top >= _store.length) 
    { 
     Object[] temp = new Object[_store.length+ MAXSIZE]; 
     for(int i = 0; i < _top; ++i) 
     { 
      temp[i] = _store[i]; 
     } 
     _store = temp; 
    } 
    _store[_top] = item; 
    ++_top; 
} 

public Object pop() 
{ 
    if(_top == 0) return 0; 
    --_top; 
    return _store[_top]; 
} 

public String toString() 
{ 
    String s = ""; 

    s = s + "--Top--"; 
    for(int i = _top-1; i >= 0; --i) 
    { 
     s = s + " " + _store[i]; 
    } 
    s = s + "--Bottom--"; 

    return s; 
} 

} 
+0

はすべてを再コンパイルします。 – EJP

+0

私はそれを試みました。別のプログラムを作成した後で、すべてをコピーし、プログラムを削除し、すべてをリサイズしましたが、問題は解決しません。 – Vaak

+0

*複数のテキストエディタでコードを開いていないことを確認してください*。 cmdを使用してコンパイルする場合は、ソースファイルのパスを確認します。あなたがIDEを使用している場合コードを実行する前に* CleanとBuild *を試してください。 – Arvind

答えて

-1

私はあなたのコードをIDEで実行しました:IntelliJ IDEA。そして、私は次の結果を得ました:

Stack test: --Top-- Thing B - name - Barney ID = 42 20 Fred--Bottom-- 
Thing B - name - Barney ID = 42 
Stack test: --Top-- 20 Fred--Bottom-- 
Stack copy: --Top-- Thing B - name - Barney ID = 42 20 Fred--Bottom-- 
20 
Not a String 
Fred 
String length = 4 
empty 

あなたのソースコードはうまくいきます。多分IDEパラメータを調整する必要があります。シンプルな "Hello World"プログラムを試してみてください。

敬具、

アルバロ

+0

私はそれを試みましたが、残念ながらそれはそれを修正しませんでした。パラメータの部分は、私のノートパソコンから私のデスクトップに私の作品を転送したので、それはおそらく本当であるように見えます、そして、ここで正常に動作しているようです。私はおそらく私のIDEで混乱し、私はそれを修正することができます参照してください。しかし、入力のための多くのありがとう。 – Vaak

関連する問題