0

私は文を逆にしようとしています。(文が「私は猫です」の場合、結果は「猫は私です」になるはずです)問題は、インデックスが範囲外のエラーを取得していることです。問題を修正する方法がわかりません。インデックスが間違っているのか、部分文字列の部分が間違っているのかわかりません。私はJavaの初心者なので、どんな助けも本当に感謝しています。エラー: 文字列インデックスが範囲外です: -1

ありがとう

public class ReverseWords {

    public static void main(String [] args){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter File Name: ");
        String fileName = in.nextLine();
        File f = new File(fileName);
        try {
            Scanner input = new Scanner(f);
            int x = 1;
            int n = input.nextInt();
            while (x<n) {
                String line = input.nextLine();
                Queue<String> q = new LinkedList<String>();
                q.add(line);
                int ws = line.indexOf(" ");
                String word = line.substring(0,ws);
                ArrayList<String> a = new ArrayList<String>();
                while (line.length() > 0) {
                    a.add(word);
                    q.remove(word);
                }
                System.out.println("Case #" + x);
                for (int i = a.size(); i != 0; i--) {
                    System.out.print(a.get(i));
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
4

2 に答える 2

1

のJavaドキュメントからString

public int indexOf(int ch)

...

この文字列にそのような文字がない場合は、-1 が返されます。

空白がなくなる準備はできていますか?

たとえば、最後の反復で...

しかし、他にもバグがあるようです。

于 2013-05-31T16:18:17.857 に答える
0

あなたの問題は、次のような行にあります。

int ws = line.indexOf(" ");
String word = line.substring(0,ws);

indexOf探しているものが見つからない場合は常に-1 を返します。文字列でそのインデックスを使用しようとすると-1、境界外でインデックスを作成することになります。

スペースのない行でスペースを見つけようとしているようです。

于 2013-05-31T16:18:48.870 に答える