gpt4 book ai didi

java - 堆栈:如何根据另一个整数检查每个整数(在循环中)?

转载 作者:行者123 更新时间:2023-11-30 03:15:06 26 4
gpt4 key购买 nike

我必须使用 Stack 实现一个程序,该程序允许用户输入一个正整数 n,后跟 n 个整数。然后程序应该允许用户输入另一个整数val,之后程序应该显示最后一个大于val的值。根据我对程序的理解,我发现它应该将堆栈顶部的每个元素与 val 进行比较。因此,要将每个元素与 val 进行比较,它应该从顶部开始迭代堆栈中的值。我真的不知道如何进行这项工作,所以如果我能得到任何帮助,我会很高兴。这是我的程序:

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());
}
}
}

最佳答案

您永远不应该迭代堆栈,它违背了选择该数据结构的全部目的。您想要使用 poppeek:

while (!NumsInStack.empty()) {
if (NumsInStack.peek() > val) {
System.out.println("woot!");
break;
}
NumsInStack.pop();
}

由于您只希望它打印出最后一个较大的数字,因此您还应该在 print 语句后面放置一个 break; ,以便在找到匹配项时跳出循环。如果没有中断,它将打印所有较高的值。

关于java - 堆栈:如何根据另一个整数检查每个整数(在循环中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com