Java在输入负数时发现最低数字混乱

时间:2016-03-02 01:58:46

标签: java arrays scope initialization java.util.scanner

我必须找到数组中的最小数字。它在我手动制作阵列时有效,但是当我使用扫描仪从用户那里获取数字并且它们输入负数时,它不会考虑负号并且就像数字是正数一样。 scan.nextInt会出现导致此问题的负数吗?

System.out.println("Enter an array size.");
size = scan.nextInt();

int[] numbers = new int[size];

System.out.println("Enter each integer in the array and press Enter after each one.");

for(int i = 0; i < size; i++)
{
    numbers[i] = scan.nextInt();
}

for(int j = 0; j < size; j++)
{
    smallest = numbers[0];
    if (numbers[j] < smallest)
    {
        smallest = numbers[j];
    }
}

System.out.println("Smallest Number is " + smallest);

这是参考代码

2 个答案:

答案 0 :(得分:2)

每次循环都会重置smallest变量。

尝试在循环之前初始化

    smallest = numbers[0];
    for(int j = 0; j < size; j++)
    {
      if (numbers[j] < smallest)
      {
        smallest = numbers[j];
      }
    }

答案 1 :(得分:0)

您必须初始化最小的循环,最好是在开头。如果你要找到最小的,给它分配一个大值(如果最大,分配一个非常小的值);

int smallest = Integer.MAX_VALUE;

Integer.MAX_VALUE 是您可以分配给Java中的整数的最大可能值。

始终记得释放资源。完成后,您必须关闭扫描仪对象。

scan.close();   // always release resources

以下是演示代码;

演示代码

import java.util.Scanner;

public class FindLowest {

    public static void main(String[] args) {
        // initialization of variables
        int size;
        Scanner scan = new Scanner(System.in);
        int smallest = Integer.MAX_VALUE;

        System.out.println("Enter an array size.");
        size = scan.nextInt();

        int[] numbers = new int[size];

        System.out.println("Enter each integer in the array and press Enter after each one.");

        for (int i = 0; i < size; i++) {
            numbers[i] = scan.nextInt();
        }

        scan.close();   // always release resources

        for (int j = 0; j < size; j++) {
//      smallest = numbers[0];          // dont initialize here, initialize at beginning
            if (numbers[j] < smallest) {
                smallest = numbers[j];
            }
        }

        System.out.println("Smallest Number is " + smallest);
    }
}

输出样本

Enter an array size.
5
Enter each integer in the array and press Enter after each one.
1
-2
3
-4
5
Smallest Number is -4