此Java代码似乎使我的负整数变为正数。我传入-9和1,然后在调试器中,第一个for循环中的i从27开始而不是负27。更奇怪的是,如果我添加一行使i = -1,它将切换永远在-27到-28之间。有人可以告诉我为什么吗?
我传递的是-9,1。结果应该是一个可被3整除的数字,并且模数为5。我认为-29满足此条件。
public static int getIntegerH(int x, int y) {
System.out.println("The result of the getIntegerH method:");
boolean flag = true;
int n = x * 4; // 36
int m = x * 3; // 27
if (x == y) {
flag = true;
}
if (x < 0 || y < 0) {
for (int i = -m; i < -n; i++) {
if (i / 3 == x && i % 5 == y ) {
System.out.println(i);
flag = false;
}
}
} else if (x > 0 || y > 0) {
for (int i = m; i < n; i++) {
if (i / 3 == x && i % 5 == y ) {
System.out.println(i);
flag = false;
}
}
}
if (flag == true) {
System.out.println("No such number");
}
return 0;
}
答案 0 :(得分:2)
您将i设置为m的负数。
for (int i = -m; i < -n; i++) {
如果您为x传递了-9,则m为-27,-27的负值为27。
作为旁注,您还需要查看您的状况和增量。如果您想从-27倒数到-36,您将需要以下内容:
for (int i = m; i >= n; --i ) {
答案 1 :(得分:0)
这是一个适合您的解决方案,可以与您喜欢的任何除数或模数一起使用:
drive team home_comfy_lead home_drives hdwcl
0 1 home 0 1 0
1 1 home 0 1 0
2 2 away 0 0 0
3 2 away 0 0 0
4 2 away 0 0 0
5 3 home 0 2 0
6 3 home 0 2 0
7 3 home 1 2 1
8 4 away 0 0 0
9 4 away 0 0 0
10 4 away 0 0 0
11 5 home 1 3 2
12 5 home 1 3 2
13 6 away 0 0 0
14 6 away 0 0 0
15 7 home 1 4 3
16 7 home 1 4 3