-2

虽然我看到了一些关于同一主题的问题,但它们对我的情况还不够具体。

import java.util.*;
public class Kap3Oppg5 {
public static void main(String[] args) {
    int x = 0;
    int tabell[] = new int[10];
    int heltall;
    Scanner in = new Scanner(System.in);
    int minstetall = tabell[0];

    while (x < 10) {
        System.out.println("Tast inn neste tall:");
        heltall = in.nextInt();
        tabell[x] = heltall;
        x = x + 1;
    }

    for (int i=0;i<tabell.length;i++) {
        if (tabell[i] < tabell[0])
            minstetall = tabell[i];

    }
    System.out.print(minstetall);
}

}

为什么这不是打印最低数字?

4

4 回答 4

4

if 中的测试总是针对数组中的第一个元素进行测试。您可能希望根据迄今为止找到的最低数字对其进行测试:

if (tabell[i] < minstetall) { ...
于 2013-02-04T10:06:29.483 回答
2

因为每次您都在与数组的第一个元素进行比较。

于 2013-02-04T10:06:39.243 回答
2

您的比较if (tabell[i] < tabell[0])是错误的,应该是:

if (tabell[i] < minstetall)

您正在与第一个元素进行比较。目前,如果您的数组的第一个元素偶然包含最小值,那么您将获得正确的结果,否则当前代码将失败。

于 2013-02-04T10:07:01.620 回答
2

这是因为在这一行中,您正在比较错误的东西:

if (tabell[i] < tabell[0])

应该

if (tabell[i] < minstetall)
于 2013-02-04T10:07:05.163 回答