2016-10-17 14 views
-1

私はスタックの助けを借りてプログラムを書く。私は入力をデコードする必要があります。例えば「he-llo」という単語は「hllo」になりますが、「hello」になります。 ' - 'はその前に来る文字を削除する効果があるはずです。 ポップ(自分で実装しています)を使用する必要があることは知っていますが、2回続けて使用することに問題があります。実際にはすでに最初のif文に 'e'が表示されているためです。私はこれを修正する方法については本当に不明ですが、私はそれを間違って印刷していますか?私はポップコードを適応させるべきですか?スタックで2回ポップできますか? (java)

//my pop code 
public char pop() { 
    if(!this.empty()){ 
     if(top > 0){ 
      temp = arr[top - 1]; 
      arr[top -1] = 0; 
      top = top -1; 
     } 
     return temp; 
    }else{ 
     return 0; 
    } 

    //handling the charachters of the input 
    if(Character.isLetter(ch) || Character.isDigit(ch)){ 
     Stack.push(ch);  
     System.out.println(myStack.peek()); 
    } 
    if(Stack.peek() == '-'){ 
     myStack.pop(); 
     myStack.pop(); 
     System.out.println(Stack.peek()); 
    } 
} 
+1

完全で検証可能な例を投稿してください。コードをダウンロードして実行できるはずです。主な方法や、スタックを設定してpop()を呼び出すために使用するメソッドは表示されないので、今はできません。 – nhouser9

+0

前にcharを削除してマイナス記号を解決する唯一の問題はありますか? – Joey

+0

@ nhouser9ああ申し訳ありませんが、私のコードは長すぎてここに投稿できません。私はそれを行う許可を持っていません:( – maria

答えて

-1

私は文字列操作を行うたびに、いつもStringBuilderを使用します。とても便利です!

これを試してください。

// please name this method properly 
public static String someMethod(String str) { 
    StringBuilder builder = new StringBuilder(str); 
    for (int i = 0 ; i < builder.length() ; i++) { 
     if (builder.charAt(i) == '-') { 
      builder.deleteCharAt(i); 
      if (i > 0) { 
       builder.deleteCharAt(i - 1); 
       i--; 
      } 
     } 
    } 
    return builder.toString(); 
} 
+0

それを試してみるでしょう:) – maria

+0

OPの質問の一部であった 'stack'を使用しませんが、おそらく動作します... – nhouser9

0

あなたの質問は2回連続でポップを使用してについてです - はい、限りトップがスタック

に少なくとも2つのオブジェクトを表してスタックのセマンティクスを動作するはずです、もしポップで少し間違っています実装では配列を使用しています。スタックの上(上)があなたが見るオブジェクトであると考えられています。ポップされたオブジェクトを0に設定する必要はありません。スタックが正しく実装されていれば、pushメソッドは値を上書きする必要があります。

空試験は上記のとおり正しく行われません。空の場合は、先頭が<であるかどうかをテストし、そうである場合はtrueを返し、そうでない場合はfalseを返します。 stack [0]は正当な要素です。おそらくスタックのレビューとその実装と操作は順調ですか?

+0

フィードバックに感謝します!私はそれを変更しようとします – maria

関連する問題