bugfix> java > 投稿

私はJavaで単語を逆にする方法を探しています。 これは私のコードであり、エラーが発生します。

誰かが理由を説明できますか?

import java.util.Scanner;
public class Robot {
    public static void reverse(String text) {
        int leng = text.length();
        int i = 0;
        while (leng-i>=0){System.out.print(text.charAt(leng-i));
        i++;
        }
    }
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("Type in your text: ");
        String text = reader.nextLine();
        System.out.print("In reverse order: ");
        reverse(text);
    }
}

単語の順序が逆になると思っていましたが、そうではありません。

回答 2 件
  • そのはず

    int i = 1;
    
    

    そうでなければ、あなたは StringIndexOutOfBoundsException を取得します   text.length() 以来  は有効なインデックスではありません。

    少し短く(そしてより涼しく)するには、次のように書きます。

    System.out.print(text.charAt(leng - i++));
    
    

    ただし、通常は

    System.out.print(new StringBuilder(text).reverse());
    
    

  • あなたの問題はここにあります:

    int leng = text.length();

    Javaの配列は0インデックスが付けられています。つまり、文字列の最後の文字がインデックス( text.length()-1 )、 text.length() の代わりに

    だから、あなたは leng を設定することができます   text.length()-1 へ 、または i を設定できます   1

あなたの答え