我必须找到数组中的最小数字。它在我手动制作阵列时有效,但是当我使用扫描仪从用户那里获取数字并且它们输入负数时,它不会考虑负号并且就像数字是正数一样。 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);
这是参考代码
答案 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