Co w tym kodzie jest niepoprawne?

0
import java.util.Scanner;
public class MinAndMaxNumbers {
 
    public static void main(String[] args) {
        Scanner in = new Scanner (System.in);
       
       
        int max, max2, number, size;
        max = max2 = 0;
       
        boolean error = false;
        System.out.println("How many numbers? (min 2)");
       
        do {
            size = in.nextInt();
            if(size < 2) {
                error = true;
                System.out.println("2 numbers at least, try again");
            }
            else
                error = false;
        }
        while(error == true);
       
        for (int i = 1;  i <= size; i++)
        {
            System.out.println("Introduce number " + i + ":");
            number = in.nextInt();
            if(i == 1) { //if it's the first number, max and max are the same
                max = max2 = number;
            }
            else { //for the rest of the numbers we'll do a check
                if(number > max2) {
                    max = max2;
                    max2 = number;
                }
            }
        }
       
        System.out.println("Highest numbers: " + max + " and " + max2);
    }
}

Powinien wyznaczać najwyższą liczbę i najwyższą zaraz po niej z tych które podał użytkownik.
Gdy podaję przykładowo liczby: 1,5,4,3 jako najwyższą prawidłowo podaję 5, jednak jako następną w kolejności podaje 1.

1
if(number > max2) {
    max = max2;
    max2 = number;
} else if(number > max){
   max = number;
}

Powinieneś tu jeszcze sprawdzać number>max, bo number może być mniejsze od max2 ale większe od max.

1

Z takich uwag co do kodu:

1.Twoja pętla może zostać znacznie uproszczona:

while (true) {
	size = in.nextInt();
	
	if (size >= 2) {
		break;
	}
	
	System.out.println("Please enter at least 2 numbers.");
}

2.Zmienna error nie reprezentuje tego, co wybrzmiewa z jej nazwy. Dlaczego błędu nie ma, gdy wartość error jest prawdziwa? ;-) (abstrahując od tego, iż ta zmienna jest zbędna w tym przypadku, co pokazałem wyżej).

3.size -> count (ponieważ wczytujesz ilość liczb*, a nie rozmiar).

* liczbę liczb, dla purystów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1