我正在尝试练习字符串操作技巧,我想出了一个解决方案来检查一个字符串数组,以查找结束于' y'或者' z' (一个词被定义为由空格分隔的一串字符)但显然是错误的。如何解决此错误?
static int wordEndYZ(String str)
{
int i, j, counter;
for( i = 0; i < str.length(); i++ ) // search through string array
{
j=i; // copy position so original position intact
while ( str[j] == ' ' ) // *First error* space occurs, check last letter
{
if ( str[j-1] == 'y' || 'x' ) // 'y' or 'z'? If so counter increments
counter += 1;
}
}
return counter;
}
答案 0 :(得分:2)
首先,Strings不仅仅是透明的char数组。您需要使用String#charAt(int)
执行查找:
while ( str.charAt(j) == ' ' )
其次,Java中没有语法糖用于与多个值进行比较。你必须这样做:
if ( str.charAt(j-1) == 'y' || str.charAt(j-1) == 'x' )
答案 1 :(得分:0)
基本上,我的解决方案背后的想法是:将字符串拆分成一个数组,并检查字符串数组中的每个最后一个字符,如果它通过条件,则递增计数器。
static int wordEndYZ(String str) {
int counter = 0;
String[] words = str.split(" ");
for(String w : words){
if(w.charAt(w.length() - 1) == 'y' || w.charAt(w.length() - 1) == 'z'){
counter++;
}
}
return counter;
}
答案 2 :(得分:0)
字符串不应该被视为字符数组。您需要使用执行查找 try:String #charAt(int)
另外,再研究一下你的语法,我看到你甚至没有提到的一些错误。我惊讶它甚至编译。它编译,对吗?