2017-10-18 1 views
0

数値を1つずつスタックに加算、減算、すべての操作の結果を表示します。例。私は手動でスタックに値をプッシュするとJava、Stack Calculatorが正常に動作しますが、スキャナを使用してプッシュした場合は正しく動作しません。

入力:10 入力:+ 入力:10 入力:= 出力:10 + 10 = 20

私は手動で数字と演算子を押して、それを実行しようとしました、それがうまく働いた、のために加算と減算のみ。 (ここにコードがあります)。

public static void main(String[] args) { 
    Stack<String> stack = new Stack(); 
    stack.push("10"); 
    stack.push("+"); 
    stack.push("10"); 
    stack.push("-"); 
    stack.push("20"); 
    stack.push("+"); 
    stack.push("1"); 
    stack.push("="); 
    int result=0; 
    int i; 
    int result=0; 
    for(i=0;i<stack.size();i++){ 
     if (stack.elementAt(i)== "+"){ 
      //does get in 

2番目のコードで、スタックが最初のコードのものと似ていることを確認しました。これは似ています。なんらかの理由で、 "+"または " - "に等しいにもかかわらず、ifステートメントを実行することは望ましくありません。

Stack<String> stack = new Stack(); 
    Scanner sc = new Scanner(System.in); 
    while(sc.hasNext()){ 
     String s1 = sc.next(); 
     stack.push(s1); 
     if(s1.equals("=")) { 
      break; 
     } 
    } 
    int i; 
    int result=0; 
    for(i=0;i<stack.size();i++){ 
     System.out.print(stack.elementAt(i)); 
    } 
    for(i=0;i<stack.size();i++){ 
     if (stack.elementAt(i)=="+"){ 
     //doesn't get in 
+0

「スキャナを使用してプッシュしない場合」は無意味です。 – EJP

答えて

0

あなたのコードに問題が

if (stack.elementAt(i)== "+") 

スタックはarguementsの文字列型を取り、この行です。比較のために使用する必要があります

if(stack.elementAt(i).equals("+")) 

同様に、 " - "も同じです。

+0

修正済み!ありがとう、あなたは私の人生を救った! –

関連する問題