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

Java 查找空格时返回-1的indexOf(),java,string,indexof,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();

我使用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]);
    }
  }
}
import java.util.Scanner;
班长{
公共静态void main(字符串[]args){
扫描器y=新扫描器(System.in);
System.out.println(“输入字符串”);
字符串s=y.nextLine();
int字=1;
对于(int i=0;i对于(int i=0;i您可以使用
String.split
,例如:

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

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

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

问题是,你从1开始查找
words
,并为找到的每个空格递增。因此,如果有一个空格,
words
是2。然后你试图查找那么多空格-但只有1个,所以当它没有空格可查找时,返回-1,你就会得到异常。

问题是你从
words开始查找
在1处,并为您找到的每个空格递增。因此,如果有一个空格,
words
是2。然后您尝试查找那么多的空格-但只有1个,因此当它用完要查找的空格时,返回-1,您将得到异常。

这就是您所做的吗?只需
System.out.println(s.indexOf(“”)即可
已经足够了;).PS:look@AxelH no,因为只有那一行留下了太多的解释,例如,
s
看起来像什么,在调用
indexOf()
@AlexH()之前是否以及如何更改。噢,拜托,这已经足够小了,没有一行是不完整的
最终重新返回-1或_always,即第一次?您是否检查了输入中是否存在空格,即是否可以提供一些输入示例?@All,因为没有任何解释,这对我来说是不够的。没有输入/输出的代码…所以您要么添加输入/输出,要么删除一些可能会改变结果的复杂性havior..这就是您所做的吗?只需
System.out.println(s.indexOf(“”);
就足够了;).PS:look@AxelH no,因为这一行太多了,无法解释,例如
s
看起来像什么,在调用
indexOf()之前是否以及如何更改
@AlexH噢,算了吧,这已经足够小了,没有一行是不完整的了最终重新返回-1或_always,即第一次?您是否检查了输入中是否存在空格,即是否可以提供一些输入示例?@All,因为没有任何解释,这对我来说是不够的。没有输入/输出的代码…所以您要么添加输入/输出,要么删除一些可能会改变结果的复杂性哈维奥。。