Char不能被解除引用?使用compareTo

时间:2012-11-07 20:40:15

标签: java compareto

我正在尝试创建一个将读取字符串的程序,并比较字符串中的每个字符,看它是否按字母顺序排列。

public class Main
{
    public static void Main ( String[] args)
    {
        System.out.println("#Please enter the string: ");
        String s = BIO.getString();

        while(!s.equals("END")){
            int length = s.length();
            String sLC = s.toLowerCase();
            int count = 0;
            boolean inOrder = true;

            for(int i = 0; i < length - 1 ; i++){
                if(sLC.charAt(i).compareTo(sLC.charAt(i+1)) > 0) {
                    inOrder = false;
                    break;
                }   
            }  

            System.out.println("#Please enter the string: ");  
            s = BIO.getString();
        }
    }
}

我正在使用blueJ,当我尝试编译它时,它给出了错误'char无法解除引用并在我的IF语句中突出显示'compareTo'方法?

2 个答案:

答案 0 :(得分:6)

.charAt()返回char,这是一个原语。它没有.compareTo()方法。

char的行为很像(较小)int;请改用以下内容:

if(sLC.charAt(i) > sLC.charAt(i+1)) {

答案 1 :(得分:3)

sLC.charAt(i)为您提供原始字符。而且你不能在原语上调用compareTo。您需要将其包装在Character包装器对象中,或者只使用comparison operator

if(Character.valueOf(sLC.charAt(i)).compareTo(
   Character.valueOf(sLC.charAt(i+1))) > 0)

或简单地说: -

if(sLC.charAt(i) > sLC.charAt(i+1))