循环在Java中将我的负整数变成正数

时间:2019-02-08 20:28:53

标签: java loops for-loop

此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;
}

2 个答案:

答案 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