Java Exercise: Abecederian Program

hanleyhansen's Avatar, Join Date: Jan 2008
Pro contributor
I need to write a program in java that checks whether or not a word is an abecedarian. An abecedarian is a word whose letters appear in alphabetical order. Here is the exercise straight from the book:

Exercise 7.6 A word is said to be "abecedarian" if the letters in the word appear
in alphabetical order. For example, the following are all 6-letter English abecedarian
words.
abdest, acknow, acorsy, adempt, adipsy, agnosy, behint, beknow,
bijoux, biopsy, cestuy, chintz, dehors, dehort, deinos, diluvy,
dimpsy
a. Describe an algorithm for checking whether a give word (String) is abecedarian,
assuming that the word contains only lower-case letters. Your algorithm can be
iterative or recursive.
b. Implement your algorithm in a method called isAbecedarian.

Here is what I got so far:

Code:
public class Main {
    
    public static void main(String[] args) {
       String word1 = "abcdefg";
       int index = 0;
       char x = word1.charAt(index);
       char y = word1.charAt(index++);
       int z = x.compareTo(y);
       if (z < 0) {
        System.out.println ("name1 comes before name2.");
     } else if (z > 0) {
        System.out.println ("name2 comes before name1.");
     }
    }
    
}
The problem I'm having is in the part I bolded out. The error I get is "char can not be dereferenced". Does anyone know how I can fix this or how I can do this exercise anny other way? I've been working on it for hours be at the moment I'm pretty much stuck so any suggestions are greatly appreciated.
hanleyhansen's Avatar, Join Date: Jan 2008
Pro contributor
Problem solved. If anyone is interested in my final code PM me and I'll send it to you.
Marimuthu's Avatar, Join Date: Feb 2012
Newbie Member
The above code doesn't work since we can't use char data on compareto!!!!!!!!!!!

Here is the final version




Code:
class abecedarian
{
public static  void main(String args[])
{
System.out.println(test("agnosy"));
}
public static boolean test(String s)
{
int x=s.length();
int i=0;
int j=1;
int k=2;
while (k<=x)
{
String a=s.substring(i,j);
String b=s.substring(j,k);
int flag=a.compareTo(b);
if(flag<=0)
{
i++;
j++;
k++;
}
else
{
return false ;
}
}
return true;
}
}