[英]Java comparing two letters
我在做作業時遇到一個小問題。 基本上,我正在編寫一個小程序,要求用戶輸入3個字母,並將其與輸入的3個字母進行比較。然后,該程序應該比較這3個字母,如果它們相同,則打印true。 到目前為止,我可以使用compareTo
毫無問題地做到這一點,但現在棘手的部分是我需要向程序中添加一個“公差”(我擁有),但是公差應該從Z循環回到A因此,如果公差為3,並且用戶輸入XYZ(當它確實是ABC時),則仍應打印為true。
注意:公差不會超過3。此外,我們不應該使用數組。
有什么想法我可以做到這一點嗎? 如果很難理解我的要求,請發表,我會盡力澄清:)
謝謝
編輯:基本上這是比較公差的代碼
if ((a1.compareTo(d1) <= tolerance) && (a1.compareTo(d1) >= negTolerance)
&& (b1.compareTo(e1) <= tolerance) && (b1.compareTo(e1) >= negTolerance)
&& (c1.compareTo(f1) <= tolerance) && (c1.compareTo(f1) >= negTolerance))
{
open = true;
} else open = false;
其中a1-c1是預輸入字符,d1-f1是用戶輸入的字符。 公差也是用戶輸入的1到3之間的整數
由於這是一項家庭作業,因此我不會給您完整的答案,但會給您一個提示。 您要查看字母的字符代碼(ASCII)。 這將使您解決公差問題。 您可能還需要對%
(模數)做一些魔術,以處理Z到A的循環。
編輯
如果您不能使用ASCII值,則compareTo
的返回值將為您提供幫助,但請記住,將A
與Z
進行比較以及Z
與A
進行比較將分別得到-25和25。 這是%
運算符將為您提供幫助的地方。
我建議使用char的ASCII值。
char[] expecteds = ...;
int tolerance = 3;
char input = ...;
int inputValue = char;
for (int i=0; i<expecteds.length; i++){
int delta = expected[0] - 'a' - input - 'a' % 'a';
if (i < tolerance)
result = true;
}
使用模數(%)運算符可循環回到起點:
int index = 0;
for (i in 1 .. 26) {
int index = (i+tolerance) % 26;
}
1) Map each character to a Number
2) Grab the tolerance
3) Add/subtract the tolerance from the number
4) Compare the letters in the tolerance range to the letter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.