首页 > 解决方案 > Loop is turning my negative integer positive in java

问题描述

This code in java seems to be turning my negative integers positive. I'm passing in a -9 and 1 and in my debugger, the i in my first for loop is starting at 27 instead of negative 27. What's even weirder is that if I add a line to make i = -1, it toggles between -27 and -28 forever. Can someone tell me why?

I'm passing in a -9, 1. The result should be a number divisible by 3 and a modulus of 5. I think -29 meets this criteria.

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

标签: javaloopsfor-loop

解决方案


您将 i 设置为 m 的负数。

  for (int i = -m; i < -n; i++) {

如果您为 x 传递了 -9,则 m 为 -27,而 -27 的负数为 27。

作为旁注,您还需要查看您的状况和增量。如果你想从 -27 倒数到 -36,你会想要这样的东西:

  for (int i = m; i >= n; --i ) {

推荐阅读