创建确定最大和最小数字的程序是用户输入的一系列数字。我已经为我的代码创建了几个测试用例并且它们都可以解决,但是它失败了最简单的测试用例。当用户输入单个数字时。例如,如果用户将终止值设置为25,则输入-1,最后输入终止值,输出应为 最大:-1和最小:-1。但是,我的代码将输出最大值:0和最小值:-1 - 我为什么会这样(因为我在运行循环之前将最大值初始化为0),但是我该如何解决这个问题?
这是我的代码......
Scanner scan = new Scanner(System.in);
// Declaration variables
double min;
double max = 0;
System.out.println("Enter terminating number: ");
double terminator = scan.nextDouble();
System.out.println("Enter a number: ");
double num = scan.nextDouble();
min = num;
if (num == terminator) {
System.out.println("There must be one number in the list.");
// break;
} else {
while (num != terminator) {
System.out.println("");
num = scan.nextDouble();
if ((num < min) && (num != terminator)) {
double temp = min;
min = num;
max = temp;
} else if ((num > min) && (num != terminator)) {
max = num;
} else {
max = min;
}
}
System.out.println("Largest: " + max);
System.out.println("Smallest: " + min);
}
答案 0 :(得分:1)
而不是初始化max = 0
,而不是像max = num
那样做min
。
目前尚不清楚为什么要以max
的方式初始化min
;输入单个数字时,它既是最小值,也是最大值。现在,修改max
的唯一代码是在读取第一个数字之外的数字的循环内,因此第一个数字对它没有影响。