java字符串索引超出范围错误

时间:2013-05-31 16:13:51

标签: java

我试图扭转一句话。 (如果句子是“我是猫”,那么结果应该是“猫我是我”)问题是我得到一个索引越界错误,我不知道如何解决问题。不确定我的索引是否错误或者子串部分是否错误。我只是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();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

来自String的Java文档:

  

public int indexOf(int ch)

     

...

     

如果此字符串中没有出现此类字符,则返回-1。

你准备好了没有空格吗?

例如,在最后一次迭代 ...

但看起来还有其他错误。

答案 1 :(得分:0)

您的问题将出现以下行:

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

只要indexOf找不到它要查找的内容,它就会返回-1。如果您尝试在字符串上使用该索引,那么您将在-1的索引处超出范围。

看起来你正试图在一条没有空间的线上找到空间。