我是Java新手我已經創建了一些代碼,用於確定輸入的單詞是否按升序排列。到目前爲止,我還沒有對布爾做任何事情,所以我不完全確定如何做到這一點。目前,無論是真是假,這個詞都是按升序排列的。計算出該單詞是否按升序排列的代碼
感謝
我是Java新手我已經創建了一些代碼,用於確定輸入的單詞是否按升序排列。到目前爲止,我還沒有對布爾做任何事情,所以我不完全確定如何做到這一點。目前,無論是真是假,這個詞都是按升序排列的。計算出該單詞是否按升序排列的代碼
感謝
您可能需要將word.charAt(x)與前一個字符進行比較。不是位置本身。
Boolean inOrder = true;
while (inOrder) {
word = word.toLowerCase();
char previous = word.charAt(0);
for (int x = 0; x < word.length() && inOrder ; x++) {
inOrder = word.charAt(x) >= previous;
previous = word.charAt(x);
}
if (inOrder) {
System.out.print(word + "letters in ascending order" + "\n");
} else if (!inOrder) {
System.out.print(word + "letters not in ascending order" + "\n");
}
System.out.print("#Please enter a word : ");
word = BIO.getString();
}
可以簡化這一明顯 - 只要遍歷單詞中的字符,比較每一個前一個,並立即返回false
一旦你發現它是不是:
private static boolean isInOrder (String word) {
char curr;
char prev = word.charAt(0);
for (int i = 1; i < word.length(); ++i) {
curr = word.charAt(i);
if (curr < prev) {
return false;
}
prev = curr;
}
return true;
}
如果你在該行密切關注:
if (word.charAt (x) >= x)
什麼你正在做的是將你的數字與x進行比較。
例如,假設我們有'apple',a = 97這個詞,你所做的是檢查97> 0,這是否正確。
在Java中是char
是Unicode字符,因此當使用一個作爲int時,它們作爲它們的Unicode值出來。
在你的代碼中,基本上,每個單詞都會返回,因爲這個原因它會變大。請閱讀原始類型here
這裏有各種各樣的問題。首先,'=='用於比較,而不是'='。接下來,看*完全*你在比較什麼 - 'word.charAt(x)> = x'將位置「x」處的字符與位置本身進行比較......而不是與字符串中的任何其他字符進行比較。 –
您需要比較一個字符和前一個字符。你正在比較你的角色和單詞中角色的位置。 – digitaljoel
我正在使用BlueJ。我明白,比較是錯誤的,但我不知道如何與以前的角色進行比較? – Edwards