2016-10-19 5 views
-6

文字列の入力を逆にするメソッドを作成しましたが、エラーが返ってきて、メソッドの戻り値の型をcharに変更するよう指示しています。理由を理解していない。誰でもこれを修正する方法を知っていますか?イリノイエラーのスクリーンショットを含めるJavaで文字列を反転する - エラーを返す

public String reverse(String text) { 
    String reverse = " "; 
    for(int i = text.length() -1; i >= 0; i--) { 
     reverse = text.charAt(i); 
    } 
    return reverse; 
} 
+1

機能 'CharAt'は' char'を返し、 'String'は返しません!実際には、新しい値をすべての反復で 'reverse'変数に再割り当てしようとしています。それは割り当てられた最後の値にしか到達しないので、あなたの特定の目的にかかわらずかなりナンセンスです! –

+3

テキストで十分な場合は画像を投稿しないでください。 –

答えて

1

あなたが一緒に文字をCONCATする必要があります。

public static String reverse(String text) { 
    String reverse = ""; 
    for (int i = text.length() - 1; i >= 0; i--) { 
     reverse += text.charAt(i); 
    } 
    return reverse; 
} 

あなたはまた、

public static String reverse(String text) { 
    return new StringBuilder(text).reverse().toString(); 
} 
+0

ループの繰り返しごとに 'reverse'が上書きされます –

+0

はい私はそれを見落としました。私の答えを編集する –

1
public String reverse(String text) { 
    String reverse = ""; 
    for (int i = text.length() -1; i >=0; i--) { 
     reverse+=text.charAt(i); 
    } 
    return reverse; 
} 
0

あなたは基本的にcharAt(index)ため、このエラーを取得している使用することができます指定したインデックスにcharの値を返します。

text.charAt(i)charという値を返しており、Stringに割り当てています。

代わりに、あなたが使用することができます。

reverse += String.valueOf(text.charAt(i)); 

FYI:また、この1行のコードを使用して文字列textを逆にすることができます:

new StringBuilder(text).reverse().toString(); 
0

あなたが使用して文字列を逆にすることができますこのような再帰

String reverse(String str){ 
    return (str.length()==1)?str:reverse(str.subString(str,1)); 
} 
0

このコードはうまく機能..リバース後

public class reversestring { 
    public static String reversestring(String string) { 
     String reverse = new StringBuffer(string). 
     reverse().toString(); 
     return reverse; 
     }  
    public static void main(String[] args){ 
       String string="abcdef"; 
       System.out.println("String after reverse:" +reversestring(string)); 
      } 
     } 

文字列:FEDCBA

これは役立つはず...今すぐあなたの具体的な疑問に答える

..

ja文字列charAt()メソッドは、指定された インデックス番号のchar値を返します。インデックス番号は、これはのcharAt()がどのように動作するかである

..出力Kある例

public class Solution{ 
public static void main(String args[]){ 
String name="StackExchange"; 
char ch=name.charAt(4);//returns the char value at the 4th index 
System.out.println(ch); 
}} 

から始まります。文字列を返すことは期待できません。

ハッピーラーニング!

0

あなたは素晴らしい仕事をしましたが、forループの小さな間違いです。リザーブ文字列にすべての文字を追加するだけで、すでに強調されているals @barakmanosを再割り当てしないようにする必要があります。コードは完璧で、ちょっとした変更を加えても問題ありません。

変更本 - >>これにreverse = text.charAt(i);

----- >>>>reverse += text.charAt(i);

はちょうどあなたができないので、文字列 に割り当てない戻っ準備金に文字を追加し続けます文字列にcharを代入することによってcharを文字列に変換します。