2017-09-21 4 views
-3

したがって、クラスには番号と操作の2種類があります。私はすべての数字を数に入れ、オペレータは私のスタックに入れています。スタックからポップしたオブジェクトをどのように知ることができますか?

スタックからポップすると、番号または演算子が返されるかどうかはどのようにわかりますか?

私は2つの数字と演算子を順番にポップしたかどうかを知る必要があります。

私は2つのクラス:numberNodeoperationNodeを持っています。 if文を使用してScannerを使用して数値と操作を入力します。 たとえば、数字の場合は、stack.push(new numberNode(Scanner.nextInt()));をこのように置きます。

次に、私がstack.pop()であるかどうかを、それがオペレータであるか数字であるかどうかを確認する必要があります。

+0

この質問に対する正確な回答を受け取るには、いくつかのコードを追加してください。 – desoss

+0

'obj.getClass()。getName()'? –

+1

ようこそスタックオーバーフロー。あなたはすでにこれをやってみましたか? [どのくらいの研究努力が必要ですか](https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-stack-overflow-users)を確認してください。スタックオーバーフローはコーディングサービスではありません。あなたはあなたの問題を研究し、投稿する前に自分でコードを書いてみることを期待しています。具体的なことに固執している場合は、[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)と試した内容の要約を含めてお手伝いください。 – Sand

答えて

0
element instanceof numberNode 

戻っ真の要素がnumberNodeある場合

0

は、数や操作も、それ安全なit'sのタイプを聞かせすることができますStackクラスを定義します。 ポップする前にあなたのオブジェクトに.gettype();それはあるものの種類(文字列かもしれない)と

private boolean foundOrder = false; 
private boolean twoNumbers = false; 
private String firstItem,secondItem; 
while(!foundOrder && !stack.empty()){ 
    if(stack.getData().getType().equals("number")){ 
     firstItem = stack.getData().getType(); //"write the Name on a paper" 
     stack.pop(); //dump the thing away 
     if(stack.getData().getType().equals("number")){ 
      //you found 2 types which are the same 
      secondItem = stack.getData().getType(); 
      stack.pop(); 
      twoNumbers = true; 
      while(twoNumbers && !foundOrder){ 
       if(stack.getData().getType().equals("opperation")){ 
       foundOrder = true; 
       } else { 
        stack.pop(); 
       } 
      } 
     } else { 
      //number object and you start again 
     } 
    } else { 
     //its an operation 
    } 
} 
//If you land here it has found your order or stack is empty! 
if(foundOrder){ 
    //we found your order 
} else { 
    //stack is empty and your order wasn´t in the stack 
} 

と、この安全なこれはあなたがグーグルで短い研究後に何ができるかのヒントを与えるために、コードの唯一の模式的な一種です。あなたもこれを行うことができます:)

Class myClass{ 
private int number; 
private String opperation,type; 

public myClass(int n){ 
setNumber(n); 
} 
public myClass(String s){ 
setOpperation(s); 
} 
enter code here 
private void setNumber(int n){ 
this.number = n; 
this.type = "number"; 
} 

private void setOpperation(String s){ 
this.opperation = s; 
this.type = "opperation"; 
} 
public string getType(){ 
return type; 
} 
} 
+0

しかし、一度スタックからポップすると、スタックから消えてしまいます。加えて、私は「番号、番号、操作」の順番を見つけて、それを数多くポップする必要があります。私はこの前にポップアップするすべての数値を保存することを考えました:例えば、スタックが数字の数字の数字の操作をポップアップする場合は、2つの数字をどこかに保存します。しかし、私は数字の操作命令の前に何番の数字が来るのかという手がかりはありません。 –

+0

jup、それはなぜですか?ポップする前に、ポップする前に文字列内のオブジェクトの型を安全にしてください。 –

+0

ありがとうございました。 –

関連する問題