2009-12-29 5 views
-1

Donc, je peux facilement accomplir la tâche de trouver le plus grand nombre, puis si elle peut être divisée par trois, imprimer. Mais ne sais pas comment trouver le deuxième plus grand nombre de la séquence des utilisateurs. Merci pour tous les conseils!Comment trouver le deuxième plus grand nombre en utilisant Scanner et pour la boucle (pas de tableau)

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

est ce devoir? – Bozho

+0

Le code et votre commentaire ne correspondent pas. Cherchez-vous (le plus grand nombre divisible par 3), ce que fait votre code actuellement, ou cherchez-vous (le plus grand nombre), puis quand le programme est terminé, déterminez s'il est divisible par trois? –

Répondre

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

Merci. Ce n'est pas le devoir. Je ne fais que m'entrainer au hasard pour être plus fluide. – landscape

+1

Lorsque vous mettez à jour max, vous devez également mettre à jour secondLargest. –

+0

bon point. actualisé. – Bozho

2

Vous avez juste besoin de garder 2 variables, une pour un maximum et un autre pour second_maximum et les mettre à jour de façon appropriée.

Pour une approche plus générale, jetez un oeil à 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); 
    } 
}