Encontrar 2 valores maiores

Estava tentando a programar e não encontre 2 valores maiores, foram erro calculos…

só leia 10 inteiros com variavel contador até 10… se encontrar os dois maiores…

esse exercícios no livro “Java - como programar 8edição pag 116 cap 4.23”

import java.util.Scanner;


public class Pag116Cap423 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
		
		int counter = 1;
		int number = 0;
		int largest = 0;
		int largest1 = 0;
	
		while(counter <=10){
			System.out.println("Inserir quantidade vendido?");
			number = sca.nextInt();
			
			if(number > largest){
				
				largest = number;
				
			}
			if(largest1 < largest){
				
				largest1 = number;
			}
			
			counter++;
		}
		
		System.out.println();
		System.out.println("O numero maior é "+largest+" o segundo maior é "+largest1);

	}
}

pois sou iniciante da java.

espero que me ajudem… obrigado

[code]package numero_Maior;

import java.util.Scanner;

/**
*

  • @author Owner
    */
    class Pag116Cap423 {

    /**

    • @param args
      */
      public static void main(String[] args) {
      Scanner sca = new Scanner(System.in);

      int counter = 1;
      int number = 0;
      int largest = 0;
      int largest1 = 0;

      while (counter <= 10) {
      System.out.println(“Inserir quantidade vendido?”);
      number = sca.nextInt();

       if (number > largest) {
      
           largest1 = largest;
           largest = number;
      
       }
      
       counter++;
      

      }

      System.out.println();
      System.out.println("O numero maior é " + largest + " o segundo maior é " + largest1);

    }
    }
    [/code]

Seu algoritmo ficou bom, porém apresenta falha ao inverter a ordem, sua parte da solução deu uma luz a minha solução específica:

public void localizarDoisNumerosMaiores() {
	Scanner input = new Scanner(System.in);
	
	int counter = 1;
	int largest1 = 0;
	int largest2 = 0;
	
	while(counter <= 10) {
		System.out.printf("Digite o %do valor: ", counter);
		number = input.nextInt();

		if(number > largest1) {
			largest2 = largest1;
			largest1 = number;
		}
		
		else if(number > largest2 && largest2 != largest1) {
			largest2 = number;
		}
			
		counter++;
	}
	
	System.out.printf("\nO primeiro maior: %d\nO segundo maior: %d\n", largest1, largest2);
}

Agora sim! pode digitar em qlqr ordem que achará o 1o maior e o 2o maior.

Cara fiquei minutos tentando entender a logica do Dan_daniel, e nao consegui entender, eu sei que esta funcionando, sou iniciante em java faz 1 semana, talvez seja por isso, poderia comentar sua logica cada linha por favor??
obrigado.