我在完成作业时遇到了一个小问题。基本上我正在制作一个小程序,要求用户输入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之间的整数
答案 0 :(得分:2)
由于这是家庭作业,我不会给你完整的答案,但我会给你一个提示。您想查看字母的字符代码(ASCII)。这将让您解决公差问题。您可能还必须使用%
(模数)做一些魔术来处理Z到A的循环。
修改强>
如果您不能使用ASCII值,compareTo
的返回值会对您有所帮助,但请记住,将A
与Z
和Z
进行比较{ {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