字符无法提领? 使用的compareTo(Char cannot be dereferenced

2019-10-17 09:39发布

我试图做一个程序,将一个字符串读取和字符串中的每个字符比较,看看它是否是按字母顺序排列。

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的,当我尝试编译此它给我的错误“字符无法提领,并强调了‘在我的IF语句的compareTo’方法?

Answer 1:

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

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

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


Answer 2:

sLC.charAt(i)给你的原始字符。 而且你不能调用compareTo的原语。 你需要用它在一个字包装对象,或者只是使用comparison operator

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

或者干脆: -

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


文章来源: Char cannot be dereferenced? using compareTo