gpt4 book ai didi

Java - 堆栈 - 检查堆栈的 2 个数字是否等于 100

转载 作者:搜寻专家 更新时间:2023-11-01 01:37:10 25 4
gpt4 key购买 nike

我必须检查堆栈中哪两个值的总和等于 100,然后打印出索引和数字。我已经使用数组使这成为可能,但我无法使用堆栈使其工作。请帮我。到目前为止,我已经写了以下内容,但它没有给我正确的输出。

import java.util.Stack;

public class 2 {

public static void main(String[] args) {

int x = 100;
Stack stack=new Stack();
Stack tempStack=new Stack();
stack.push(new Integer(20));
stack.push(new Integer(53));
stack.push(new Integer(41));
stack.push(new Integer(38));
stack.push(new Integer(28));
stack.push(new Integer(47));
stack.push(new Integer(70));
stack.push(new Integer(30));
stack.push(new Integer(80));
stack.push(new Integer(400));
stack.push(new Integer(3));
stack.push(new Integer(20));

tempStack = (Stack) stack.clone();
for (int i=0; i<stack.size(); i++) {
tempStack = (Stack) stack.clone();
int value = (Integer) stack.pop();
if (!stack.isEmpty()) {
for (int k=0; k<tempStack.size(); k++) {
int tmp = (Integer) tempStack.pop();
if ((value + tmp) == x) {
System.out.println("Indices " + i + " & " + k + " with values "
+ value + " & " + tmp);
}
}
}
}
}
}

以下是我基于数组的解决方案:

public class 1 {

public static void main(String[] args) {

int x = 100;
int [] array = {20,3,400,80,30,70,20,47,28,38,41,53,20};
for (int i=0; i<array.length; i++){
int temp1 = array[i];
for (int k=1; k<array.length; k++) {
int temp2 = array[k];
if ((temp1+temp2)==x)
System.out.println("Indices " + i + " & " + k + " with values "
+ temp1 + " & " + temp2);
}
}
}
}

最佳答案

作为 StackCollection它实现了 the toArray(T[]) method因此您可以使用它来将您的堆栈转换为数组并使用您的工作数组解决方案。

但是,您会遇到数组没有自动装箱的问题。自动装箱会自动在原始类型和对象之间进行转换,这意味着,例如,您可以将 int 值直接添加到您的 Stack 而无需创建 Integer 对象,如编译器会为你做这件事:

Stack<Integer> stack = new Stack<Integer>();
stack.push(20);
stack.push(53);

但是,编译器不会在 int[]Integer[] 之间进行转换,因此您必须这样做:

Integer[] array = stack.toArray(new Integer[stack.size()]);

使用 Integer[] 会很麻烦。

所以最简单的做法是:

int[] array = new int[stack.size()];

for (int i = 0; i < array.length; i++) {
array[i] = stack.get(i);
}

创建一次数组比重复克隆和清空堆栈更有效。

(尽管如果这是一个旨在教您如何使用堆栈的家庭作业问题,这可能不是最好的方法!)

关于Java - 堆栈 - 检查堆栈的 2 个数字是否等于 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460655/

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