2009-12-29 2 views
-1

그래서 가장 큰 숫자를 찾는 작업을 쉽게 완료 할 수 있습니다. 그러면 3으로 나눌 수 있다면 인쇄하십시오. 그러나 사용자 순서에서 두 번째로 큰 번호를 찾는 방법을 모릅니다. 힌트를 보내 주셔서 감사합니다!스캐너 및 for 루프 (배열 없음)를 사용하여 두 번째로 큰 번호를 찾는 방법

public class SecondLargest { 

    public static void main(String[] args) { 
     int max = 0; 
     Scanner scan = new Scanner(System.in); 
     System.out.println("How many numbers?"); 
     int n = scan.nextInt(); 

     System.out.println ("Write numbers: "); 
     for(int i=0; i<n; i++){ 
      int c = scan.nextInt(); 
      if(c>=max && c%3 == 0){ 
       max = c; 
       } 
      else 
       System.out.println("There is no such number."); 



     } 
     System.out.println(max); 
    } 
} 
+0

를 살펴입니까? – Bozho

+0

코드와 귀하의 의견이 일치하지 않습니다. 찾고있는 코드 (3로 나눌 수있는 최대 숫자)는 코드가 현재 수행하고 있거나 찾고있는 코드 (가장 큰 번호)입니다. 프로그램이 완료되면 3으로 나눌 수 있는지 여부를 결정합니다. –

답변

2
int secondLargest = 0; 
..... 
for (..) { 
    .... 
    if (c % 3 == 0) { 
     if (c >= max) { 
      secondLargest = max; 
      max = c; 
     } 
     if (c >= secondLargest && c < max) { 
      secondLargest = c; 
     } 
    } 
    .... 
} 
+0

감사합니다. 그 숙제가 아닙니다. 나는 더 유창한 무작위 재료를 훈련하고있는 중이다. – landscape

+1

max를 업데이트하면 secondLargest도 업데이트 할 수 있습니다. –

+0

좋은 지적입니다. 업데이트되었습니다. – Bozho

2

당신은 second_maximum 2 개 변수, 최대, 다른 하나를 유지하고 적절하게 업데이트해야합니다. 이 숙제는

보다 일반적인 접근 방식에 대한

selection algorithms

0
Below code will work 

import java.util.Scanner; 

public class Practical4 { 
    public static void main(String a[]) { 
     int max = 0, second_max = 0, temp, numbers; 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("How many numbers do you want to enter?"); 
     numbers = scanner.nextInt(); 
     System.out.println("Enter numbers:"); 
     for (int i = 0; i < numbers; i++) { 
      if (i == 0) { 
       max = scanner.nextInt(); 
      } else { 
       temp = scanner.nextInt(); 
       if (temp > max) { 
        second_max = max; 
        max = temp; 
       } 
       else if(temp>second_max) 
       { 
       second_max=temp; 
       } 
      } 
     } 
     scanner.close(); 
     System.out.println("Second max number is :" + second_max); 
    } 
}