簡體   English   中英

Java比較兩個字母

[英]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的返回值將為您提供幫助,但請記住,將AZ進行比較以及ZA進行比較將分別得到-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM