Java比较两个字母

时间:2011-10-14 16:28:33

标签: java loops compare back

我在完成作业时遇到了一个小问题。基本上我正在制作一个小程序,要求用户输入3个字母并将它们与3个字母进行比较。然后程序应该比较3个字母,如果它们相同则打印为真。到目前为止,我已经能够使用compareTo毫无问题地完成它,但现在棘手的部分是我需要为程序添加“容差”(我有)但是容差应该循环回来从Z到A.因此,如果公差为3且用户输入XYZ(当它确实是ABC时),它仍然应该打印出来。

注意:容差不会高于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之间的整数

4 个答案:

答案 0 :(得分:2)

由于这是家庭作业,我不会给你完整的答案,但我会给你一个提示。您想查看字母的字符代码(ASCII)。这将让您解决公差问题。您可能还必须使用%(模数)做一些魔术来处理Z到A的循环。

修改

如果您不能使用ASCII值,compareTo的返回值会对您有所帮助,但请记住,将AZZ进行比较{ {1}}分别会给你-25和25。这是A运算符可以帮助您的地方。

答案 1 :(得分:1)

我建议使用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;
}

答案 2 :(得分:0)

使用模数(%)运算符循环回到开头:

int index = 0;
for (i in 1 .. 26) {
  int index = (i+tolerance) % 26;
}

答案 3 :(得分:0)

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