0

入力文字列の単語を反転するプログラムを作成しました エラー コードがあります:

                   Exception in thread "main" java.lang.StringIndexOutOfBoundsException:String index out of range: 17
                   at java.lang.String.charAt(String.java:695)
                   at Rev.main(Rev.java:14)

メイン プログラム コードは次のとおりです。

import java.io.*;
class Rev
{
 public static void main(String args[])throws IOException
  {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter String");
    String a=br.readLine();
    a=" "+a+" ";
    int x=a.length();
    String b;
    for(int z=a.length()-1;z>=0;z--)
    {
     if (a.charAt(z)==' ')
     {
      b=a.substring(z,x);
      System.out.print(b+" ");    
      a=a.replace(b,"");
     }
    }
  }

}

4

5 に答える 5

1

Java の専門家があなたの問題を解決する必要がある場合、彼はほんの数行で解決します。

final List<String> words = Arrays.asList(input.split(" "));
Collections.reverse(words);
for (String word : words) System.out.print(word + " ");
System.out.println();

これを演習として行っていて、自分で実装したい場合でも、同じ基本的な考え方を使用することを検討できます。たとえば、文字列を実行して、スペースのすべての位置をList<Integer>. 次に、 を使用して、そのリストを逆方向に処理しinput.substring(list.get(i), list.get(i-1))ます。

于 2012-10-12T17:22:01.957 に答える
0

これがあなたの質問に対する答えではないことは知っていますが、reverse()として知られているStringBuilderまたはStringBufferメソッドを試してみませんか

StringBuilder sb = new StringBuilder("Hello");

sb.reverse();
于 2012-10-12T17:20:51.720 に答える
0

指定している文字列インデックスが間違っていることはわかっています。エラーが発生している場所がわかります。System.out.println誤ったステートメントの直前、およびコード内の他の重要なポイントに、文字列インデックスと文字列の長さを出力する呼び出しを追加します。問題をデバッグします。

于 2012-10-12T17:15:31.303 に答える
0

おそらく試してみてください:

int x=a.length()-1;

部分文字列がエラーの原因です

于 2012-10-12T17:12:20.870 に答える
0

入力をスペースで分割して配列に格納し、配列を逆にしないのはなぜですか?

于 2012-10-12T17:12:25.370 に答える