2009-12-29 4 views
-1

Так что я могу легко выполнить задачу, чтобы найти наибольшее число, а затем, если ее можно разделить на три, распечатать. Но не знаю, как найти второе по величине число из последовательности пользователей. Спасибо за любые подсказки!Как найти второе по величине число с помощью Scanner и for loop (без массива)

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), что именно делает ваш код в настоящее время, или вы ищете (наибольшее число), затем, когда программа завершена, определяя, делится ли она на три? –

ответ

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

Вам просто нужно держать 2 переменных для максимума, а другой для second_maximum и обновлять их соответствующим образом.

Для более общего подхода, взгляните на 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); 
    } 
}