Сейчас посмотрю логику "правильного решения", но все равно без вашего мнения не обойтись
Суть решения:
Сначала проверить, будут ли введены два числа, задать им значения путем сравнения
Затем проверить, будут ли еще вводиться числа и пустить уже в цикл сравнения трех чисел друг с другом с последовательным присвоением минимальных значений требуемым переменным
package com.javarush.task.pro.task04.task0410;
import java.util.Scanner;
/*
Второе минимальное число из введенных
*/
public class Solution {
public static void main(String[] args) {
int min1=Integer.MAX_VALUE, min2=Integer.MAX_VALUE;
Scanner a=new Scanner(System.in);
int k,q;
k=a.nextInt();
q=a.nextInt();
if (k>q)
min1=q;
min2=k;
while (a.hasNextInt())
{
int x=a.nextInt();
if (x>min2)
continue;
else if (x<=min2 && x>min1)
min2=x;
else
min2=min1;
min1=x;
}
System.out.print(min2);
}
}