1

だから私は文字列EGの形で数学の方程式を読むプログラムに取り組んでいます:1 + 2 * 3

2つの異なるスタックが必要です。1つはオペランド用、もう1つはオペランド用です。数値を数値スタックにプッシュし、演算子を文字スタックにプッシュして、特定の条件が満たされたときに方程式を処理します。環境にインポートしたArrayStacksを使用しています。ただし、スタックをコンパイルしようとするとエラーが発生し続けます。

これが私が持っているものです:

public static String test = new String("2 * 3 + 6 ");
public static ArrayStack<Double> numbers = new ArrayStack<Double>[20];
public static ArrayStack<Character> operands = new ArrayStack<Character>[20];

それは私にこのエラーを与え続けます(-Xlintで実行):

infixNotation.java:7: error: generic array creation
public static ArrayStack<Double> numbers = new ArrayStack<Double>[20];
                                           ^
infixNotation.java:8: error: generic array creation
    public static ArrayStack<Character> operands = new ArrayStack<Character>[20];
                                                   ^
/home/tyler/CSC223/bookFiles/ch03/stacks/ArrayStack.java:22: warning: [unchecked] unchecked cast
    stack = (T[]) new Object[DEFCAP];
                  ^
  required: T[]
  found:    Object[]
  where T is a type-variable:
    T extends Object declared in class ArrayStack
/home/tyler/CSC223/bookFiles/ch03/stacks/ArrayStack.java:27: warning: [unchecked] unchecked cast
    stack = (T[]) new Object[maxSize];
                  ^
  required: T[]
  found:    Object[]
  where T is a type-variable:
    T extends Object declared in class ArrayStack
/home/tyler/CSC223/bookFiles/ch03/stacks/StackOverflowException.java:3: warning: [serial] serializable class StackOverflowException has no definition of serialVersionUID
public class StackOverflowException extends RuntimeException
       ^
2 errors
3 warnings
4

1 に答える 1

3

public static ArrayStack<Double> numbers = new ArrayStack<Double>[20];

[20]は、20個のArrayStackのアレイを作成していることを示します。しかし、フィールドを配列として宣言していなかったため、これは明らかにナンセンスです(とりわけ)。

あなたはおそらくそのコンストラクターを20で呼び出すつもりだったので(20)

public static ArrayStack<Double> numbers = new ArrayStack<Double>(20);

于 2013-03-14T23:39:49.203 に答える