2016-10-23 43 views
1

我创建的程序确定最大和最小的数字是用户输入的一系列数字。我为我的代码创建了几个测试用例,它们都可以正常工作,但它并不能完成最简单的测试用例。当用户输入单个号码时。例如,如果用户将终止值设置为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

'max'应该是'Double.MIN_VALUE' ...和'min = Double.MAX_VALUE' – Charles

+0

将最大值初始化为非常小的数字,即'Double.MIN_VALUE',最小值为非常大的数字,即'Double.MAX_VALUE ' –

+0

@ c650我认为你的意思完全相反 - max应该是'Double.MIN_VALUE',min应该是'Double.MAX_VALUE' –

回答

1

而是初始化max = 0的,做max = num就像你已经与min做。

不清楚你为什么初始化maxmin不同,当输入单个号码时,它既是最小值也是最大值。现在,修改max的唯一代码位于读取超出第一个数字的循环内,因此第一个数字对它没有影响。

+0

好吧,这使得一吨的感觉。此外,它不会影响用户输入多个数字的其他测试用例。谢谢! – Construct0r

+0

您有影响其他数字序列的错误,顺便说一句:尝试2,1,1和2,1,0,1作为测试用例。并且请注意,在所有情况下,您的if/else逻辑都会为'max'指定一个新值,但从不会实际检查是否存在'num> max'。 – Wyzard

+0

我在else if语句中添加了(num> max)。 – Construct0r

相关问题