好的,我完全重写了这个问题,因为它有效,我想知道它为什么有效。
假设我有一个数字 testNumber,值为 567。
我想知道接下来的两个数字(shouldPassTest 和 shouldFailTest)是否相同,但在不同的 10 位。
所以这里是代码:
int testNumber = 567;
int num1 = 5;
int num2 = 6;
int num3 = 7;
int shouldPassTest = 756;
int shouldFailTest = 777;
if(Integer.toString(shouldPassTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
if(Integer.toString(shouldFailTest).matches("[5,6,7][5,6,7][5,6,7]")
{
//Do some cool stuff
}
当你运行它时会发生什么,每个数字都是从可用数字范围(5、6 和 7)中测试的。从理论上讲,shouldFailTest实际上应该通过测试,因为 7 符合我的三个标准之一,尽管是 3 次。
但是发生的情况是 777 在测试时返回 false。这正是我在代码中想要的结果,但我想知道它为什么会发生。匹配方法是否测试以确保每个数字只匹配一次?
谢谢!
这篇文章经过高度编辑。运行我的代码后,我发现该方法完全符合我的要求,但现在我想知道为什么。谢谢。