2016-04-09 14 views
0

タイトルでは、文字をある値から反対の値に反転しようとしています。たとえば、 - は+になり、+はマイナスになります。これらは現在のところ唯一の2つの値ですが、私はこのことについてどうすればいいのかと思いました。これまでのところ、私はこれを持っています。Javaの文字を反転する

public static String flip(String s, int index) { 
    System.out.print("suuuh"); 
    String k = s; 
    ArrayList<Character> array = new ArrayList<>(); 
    for (Character c : k.toCharArray()) { 
     array.add(c); 
     System.out.print(c); 
    } 
    for (int i = 0; i > index; i++) { 
     if (array.get(i) == '-') { 

      array.set(i, '+'); 
     } else { 
      array.set(i, '+'); 
     } 

    } 
    StringBuilder builder = new StringBuilder(); 
    for (Character c : array) { 
     builder.append(c.toString()); 
    } 
    return builder.toString(); 
} 

しかし、+は+に反転しません。

+0

"+"、 " - "、 "A"、 "B"、または "C"のテキスト文字には、 "反対"の意味がありません。提案: "反対の"(例えば、文字配列の)表を作成します。 – paulsm4

+0

[Javaの文字列を比較するにはどうすればよいですか?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Smutje

+0

これを読むと、 "これらは現在のところ2つの価値しかありません。" –

答えて

1

あなたの基本的なアプローチは正しいですが、反対のものを保存するにはHashMapをお勧めします。

for (int i = 0; i > index; i++) { 

はおそらく、現時点で

for (int i = 0; i < array.size(); i++) { 

何か他のものでなければなりませんので、あなたのコードは何もしません

理由は、ループはただちに終了します。

また、else

array.set(i, '-'); 

しなければならない他の改良このためList<Character>を使用しない点がないことです。 toCharArray()によって直接返されたcharを使用することができます。

+1

良いキャッチ。そして、 'else'は、@SciProgがコメントに書いているように、' array.set(i、 ' - '); 'でなければなりません。 – Andreas

+0

@アンドレアスありがとう。 'index'が何のためにあるのか知っていますか?私はこのコードを間違って修正したくありません。 –

+0

改善をお勧めしますので、すべての文字を 'List 'にボクシングするのではなく、 'toCharArray()'が返す 'char []'を直接使うことをお勧めします。 – Andreas

関連する問題