Я должен реализовать программу, используя Stack, которая позволяет пользователю вводить положительное целое число, n
, а затем n
целые числа. Затем программа должна позволить пользователю вводить другое целое число, val
, после чего программа должна отображать последнее значение, которое больше val
. Из моего понимания программы я понял, что он должен сравнивать каждый элемент с вершины стека с val
. Поэтому для сравнения каждого элемента с val
, он должен перебирать значения в стеке, начиная с вершины. Я действительно не знаю, как сделать эту работу, поэтому было бы приятно, если бы я мог получить любую помощь. Вот моя программа:Stack: Как проверить каждое целое число (в цикле) на другое целое число?
public class MyClass{
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
Stack<Integer> NumsInStack= new Stack<Integer>();
int n, num, val;
System.out.println("Please enter n.");
n=sc.nextInt();
for(int i=0; i<n;i++){
num=sc.nextInt();
NumsInStack.push(num);
}
System.out.println("Enter a value.");
val=sc.nextInt();
for(int i=0; i<NumsInStack.size();i++){
if(NumsInStack.peek()>val)
System.out.println("The number greater than "+val+" is "+NumsInStack.peek());
}
}
}
Что происходит, когда вы запускаете программу? Что говорит вам отладчик? – CPerkins
Stack реализует итеративный интерфейс. Получите экземпляр итератора и повторите его. –
@CPerkins Это не работает, так как мой код просто проверяет, является ли последний элемент больше, чем 'val'. Если это не так, оно завершается там вместо проверки других элементов сверху и видно, больше ли это того, что 'val' – Tia