gpt4 book ai didi

java - 索引意外越界

转载 作者:行者123 更新时间:2023-12-02 01:19:54 25 4
gpt4 key购买 nike

我试图编写一个程序来读取字符串并将完整的单词放入字符串数组中。这是通过避免空间来实现的。这是我的代码:

String s ="Hello how are you";
String str = "";
int i=0;

String strArr[] = new String[100];
int j=0;


while(j<=s.length()-1)
{
if(s.charAt(j)!=' ')
{
while(s.charAt(j)!=' ')
{
str = str+s.charAt(j);
j++;
}
}

j++;
if(!str.equals(null))
{
strArr[i++] = str;
str=null;
}
}

字符串数组应包含Hellohowareyou。但它显示 String index out of range: 17 但我找不到它为什么会这样?

最佳答案

这段代码有很多问题。如果你只想要一个由空格分隔的单词数组,那么你可以使用这个:

String s = "Hello how are you";
String[] words = s.split(" +");
System.out.println(String.join(", ", words));

如果你真的不想使用split,那么这也会做同样的事情。它可能有一个嵌套循环,但它仍然是线性时间,因为它们递增相同的计数器:

String s = "Hello how are you";

List<String> words = new ArrayList<>();
for (int i = 0; i < s.length(); i++) {
// increment until you find the start of a word, a non-space
if (s.charAt(i) != ' ') {
int wordStart = i;
// increment to the end of the word, a non-space or end of string
while ((i < s.length()) && (s.charAt(i) != ' ')) { i++; }
// add the word to your list
words.add(s.substring(wordStart, i));
}
}

System.out.println(words);

// if you really need it as an array
String[] wordsArray = words.toArray(new String[0]);

关于java - 索引意外越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com