检查下一个字符是否是数组的末尾 - java

问题描述:

因此,试图创建一个方法,该方法检查字符串并检查每个元音的元音。检查下一个字符是否是数组的末尾 - java

然而,当它到达最后并对char进行前向检查时。我得到一个字符串出界的异常。我试图添加一个检查空白字符提前但仍然得到例外。

for (char i = 0; i < buffer.length; i++) { 
       if (isVowel(key.charAt(i + 1)) && !Character.isWhitespace(key.charAt(i + 1)) { 
       buffer[i] = key.charAt(i); 
       } else { 
        break; 
       } 
      } 
+0

你为什么不使用字符串?对于数组,您总是需要记住它们的长度,并在阵列末尾使用它来“知道”。 –

+4

你为什么要检查'i + 1'而不只是'i'? –

+0

您应该运行循环直到'i

创建像

char[] keyChar = key.toCharArray(); 
char[] buffer = new char[keyChar.length]; //same size 

的正确尺寸的缓冲之后,反复运用关键,而不是缓冲

for(int i = 0; i < keyChar.length -1; ++i) 

不要去年底以来你在逻辑中使用[i + 1]。

请注意,这将忽略最后一个字符,您必须查看是否需要最后一个字符或不在缓冲区中。如果是这样,你将需要添加它(显然,没有你的下一个检查)

+1

谢谢!我只是分开了最后一个字符的逻辑以及如何处理它。 – Matchbox2093

for (char i = 0; i < buffer.length-1; i++) { 
      if (isVowel(key.charAt(i + 1)) && !key.charAt(i + 1) && !Character.isWhitespace(key.charAt(i + 1)) { 
      buffer[i] = key.charAt(i); 
      } else { 
       break; 
      } 
     } 
+2

由于与注释中指出的相同的原因,不会编译。 –