为什么我的'if'语句:my 'why'循环不会改变任何一个对象



我是Java的新手,创建了一个简单的程序,从另一个程序获取信息输出,并通过命令行循环使用它。不管我看多少次,我都不明白为什么'if (minValue> value'不改变minValue。

给出一些可能产生minValue的信息的输出:

Count:3
Minimum: 0 @
Maximum: 75 @ DummyDate3 DummyTime3
Average: 45.00

这是while循环的结果吗?

int minValue = 0;
    int maxValue = 0;
    String minValueTime = "";
    String minValueDate = "";
    String maxValueDate = "";
    String maxValueTime = "";
    int count = 0;
    double average = 0;
    /*
     * For as long as input is going through A date, a time, and a value
     * will come through as a loop If the minimum value is less than the
     * value coming through The minimum value will become the value. If the
     * maximum value is less than the value, the maximum value will become
     * the value.
     */
    while (input.hasNext() == true) {
        String date = (input.next());
        String time = (input.next());
        int value = (input.nextInt());
        if (minValue > value) {
            minValue = value;
            minValueDate = date;
            minValueTime = time;
        }
        if (maxValue < value) {
            maxValue = value;
            maxValueDate = date;
            maxValueTime = time;
        }
        count++;
        average = average + value;
    }
    input.close();
    System.out
            .printf("Count:%d%nMinimum: %d @ %s %s%nMaximum: %d @ %s %s%nAverage: %.2f%n",
                    count, minValue, minValueDate, minValueTime, maxValue,
                    maxValueDate, maxValueTime, average / count);
}

编辑:我试过整数。MAX_VALUE和MIN_VALUE,但它们都分别产生MAX_VALUE和MIN_VALUE的值

分配给min的第一个值是0。如果读取的每个整数都大于0,则它永远不会改变。你真正需要做的是将max和min传递给minValue和maxValue:

int minValue = Integer.MAX_VALUE;
int maxValue = Integer.MIN_VALUE;

这样,读取的第一个值很可能低于当前的最小值,并且第一个值也将高于当前的最大值。

最小值不能大于这个值,最大值也不能小于这个值

上面使用Integer.MAX_VALUEInteger.MIN_VALUE的答案很好,但是如果您知道正在循环的数组或输入至少有一个条目,则经常使用的另一种技术是将minValuemaxValue初始化为第一个条目。

int firstEntry = input.nextInt();
int minValue = firstEntry;
int maxValue = firstEntry;
while (input.hasNext()) {
    int currentVal = input.nextInt();
    minValue = Math.min(minValue, currentVal);
    maxValue = Math.max(maxValue, currentVal);
}

最新更新