1

文字列を読み取り、文字列内の各文字を比較してアルファベット順かどうかを確認するプログラムを作成しようとしています。

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」メソッドが強調表示されますか?

4

2 に答える 2

6

.charAt()charプリミティブである を返します。メソッドはありません.compareTo()

char(小さい) のように動作しintます。代わりに次を使用します。

if(sLC.charAt(i) > sLC.charAt(i+1)) {
于 2012-11-07T20:41:26.770 に答える
3

sLC.charAt(i)プリミティブ char を提供します。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)) 
于 2012-11-07T20:41:22.827 に答える