2016-10-23 3 views
1

가장 큰 숫자와 가장 작은 숫자를 결정하는 프로그램을 만드는 것은 사용자가 입력 한 일련의 숫자입니다. 내 코드에 대한 몇 가지 테스트 사례를 만들었지 만 모두 해결되었지만 가장 간단한 테스트 사례에서는 실패합니다. 사용자가 단일 번호를 입력 할 때 예를 들어 사용자가 종료 값을 25로 설정 한 다음 -1을 입력하고 마지막으로 값 종료를 입력하면 출력은 Largest : -1 및 Smallest : -1이어야합니다. 그러나, 내 코드는 Largest : 0과 Smallest : -1을 출력 할 것입니다. (루프를 실행하기 전에 최대 값을 0으로 초기화했기 때문에) 이것이 발생하는 이유는 무엇입니까?하지만 어떻게 해결할 수 있습니까? 이미 min와 함께 할 것처럼이 테스트 케이스를 통과하는 방법?

여기 내 코드의 ... 대신 max = 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로 초기화하고 매우 큰 수로 min을 초기화합니다. 즉 Double.MAX_VALUE ' –

+0

@ c650 당신이 정반대 인 것을 의미한다고 생각합니다 - 최대 값은'Double.MIN_VALUE'이고 최소값은'Double.MAX_VALUE'이어야합니다 –

답변

1

max = num을한다.

maxmin과 다르게 초기화하는 이유는 명확하지 않습니다. 단일 번호가 입력되면 최소값과 최대 값이 모두 입력됩니다. 지금은 max을 수정하는 유일한 코드가 첫 번째 숫자를 넘는 숫자를 읽는 루프 내에 있으므로 첫 번째 숫자는 아무런 영향을 미치지 않습니다.

+0

이것은 이해가 가벼운 것입니다. 또한 사용자가 여러 개의 숫자를 입력하는 다른 테스트 케이스에는 영향을 미치지 않습니다. 감사! – Construct0r

+0

다른 숫자 순서에 영향을 미치는 버그가 있습니다. BTW : 테스트 사례로 2, 1, 1 및 2, 1, 0, 1을 시도하십시오. 그리고 if/else 논리가 모든 경우에 'max'에 새로운 값을 할당하지만 실제로는 num> max인지 여부는 확인하지 않습니다. – Wyzard

+0

else if 문에 (num> max)을 추가했습니다. – Construct0r

관련 문제