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
abdest, acknow, acorsy, adempt, adipsy, agnosy, befist, behint, beknow,
bijoux, biopsy, cestuy, chintz, deflux, dehors, dehort, deinos, diluvy,
What this excercise wants us to do is simply test if a string is abecedarian or not. Here is my code so far:
... The output of this code is:
'Acknow' is an abecedarian?: true
'Sevenfold' is an abecedarian?: false
'Abcdefgh' is an abcedarian?: true
'Abcdefhg' is an abcedarian?: true
What I noticed is that my while loop seems to only be testing for the first 2 letters of the string. Hence, it realizes that "sevenfold" is not abecedarian, but doesn't realize that "abcdefhg" is not either. What did I do wrong/what should I change in my program so that it tests ALL the letters in each string?
You never change the values of a and b in your loop, so all you are doing is continuously comparing the first and second letters.
You've also got way too many variables in there. Keep it simple and get rid of x (replace it with index), first and second (just use s.charAt()), a and b (you can compare chars using >, so you don't need to convert them to ints) and length (replace it with s.length()).
subject: Abecedarian Testing - Problem with char's and While loops