我该如何解决这个错误? (此类型必须是数组类型,但解析为字符串)

时间:2015-02-22 01:08:29

标签: java arrays string

我正在尝试练习字符串操作技巧,我想出了一个解决方案来检查一个字符串数组,以查找结束于' 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;
}

3 个答案:

答案 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)

另外,再研究一下你的语法,我看到你甚至没有提到的一些错误。我惊讶它甚至编译。它编译,对吗?