indexOf()在查找空格时返回-1

时间:2017-02-01 14:40:07

标签: java string indexof

我在尝试分隔字符串中的单词时使用indexOf()查找空格,但索引off仍然返回-1;这是我的代码: -

import java.util.Scanner;

class Main {
  public static void main(String[] args){
    Scanner y = new Scanner(System.in);
    System.out.println("Enter the String");
    String s = y.nextLine();
    int words = 1;
    for (int i = 0; i < s.length(); i++) {
     if(s.charAt(i)==' ') words++;
    }
    String[] a = new String[words];
    int l = s.length();
    for (int i = 0; i <= words; i++) {
      int r = s.indexOf(" ");
      a[i] = s.substring(0, r);
      s = s.substring((r + 1), l);
    }
    for(int i = 0; i <= words; i++) {
      System.out.println(a[i]);
    }
  }
}

2 个答案:

答案 0 :(得分:2)

问题是你从1开始words并为你找到的每个空间增加它。所以,如果有一个空格,words是2.那么你就是在寻找那么多空格 - 但是只有1个,所以当它用完空间时找不到,它返回-1,你得到了例外。

答案 1 :(得分:0)

您可以使用String.split,例如:

String s=y.nextLine();
for(String i : s.split(" ")) {
   System.out.println(i);
}