2014-01-08 5 views
1

이 코드가 잘못되었음을 알고 있습니다. 나는 초심자이기 때문에 나와 함께 곰.루프에서 최저 홀수 찾기

최저 홀수를 찾아야하지만 숫자가 입력 되더라도 0으로 유지됩니다. '최저'로 초기화해야하지만 어떻게 초기화합니까?

가장 낮은 = 0에서 문제가 발생하고 있지만 최저 초기화 할 경우 확실하지 않다

class Odd 

{ 
    public static void main(String[] args) 
    { 
     int number; //the number entered by the user 
     int input; //the amount of numbers to be entered by the user 
     int index; 
     int lowest = 0; //lowest odd number 

     System.out.println("How many numbers? "); 
     input = EasyIn.getInt(); 

    for (index = 1; index <= input ; index ++) 
     { 
      System.out.println("Enter number " + index + ":"); 
      number = EasyIn.getInt(); 

      if ((number % 2 == 1) && (number < lowest)) 
      { 
       lowest = number;  
      } 

     } 

    System.out.println("The lowest odd number entered was " + lowest); 

    } 
} 
+0

'int 최저 = 0; // 최저 기수입니다. 0은 홀수가 아닙니다. –

답변

6

당신이 입력하는 솔루션은 big enough valuelowest를 초기화 비어 있지 않은지 경우 :

int lowest = Integer.MAX_VALUE; 

모든 값이 작아집니다이 방법은, 그래서 lowest은 입력의 값 중 하나가 될 것입니다.

1

최저로 0으로 초기화 한 다음 그보다 낮은 수 (및 홀수)를 찾습니다.

나는 EasyIn.getInt()로 초기화 할 것이므로 체크리스트의 첫 번째 숫자가된다.

4

당신은 0에서 시작하므로 더 큰 값을 얻지 못할 것입니다. 이와 같이 시작하는 경우

int lowest = Integer.MAX_VALUE; 

또한 (n % 2)은 양수로 1이됩니다. 당신이 이상한 음수 테스트 할 경우에 당신은 (n & 1) != 0


주를 원하는이가 최대가 될 수있는 유일한 값이 너무 경우에도 Integer.MAX_VALUE를 홀수이다. 그러나이 값을 입력하는 것과 차이가없는 값의 차이를 알 수 있기를 원하면이 값을 대신 사용할 수 있습니다.

long lowest = Long.MAX_VALUE; 

이 당신에 Integer.MAX_VALUE를 입력하고로부터 Long.MAX_VALUE 같은 값이 훨씬 높다되고 있지 사이의 차이를 구별 할 수 있습니다.

+2

+1은 'n % 2 == 1'이 양수에 대해서만 작동한다는 것을 지적합니다. 'n % 2! = 0' 또한 일시적인 해결책이 될 수 있습니다. –

+1

n % 2 == 1 일은이 답을 (현재) 가장 좋은 것으로 여기 유일하게 정말로 완성 된 것입니다. 왜 OP가 그것을 받아들이지 않았는지 잘 모르겠다. –