我正在java上做一个堆栈,它包含五个整数,但我必须打印出只有值相等的值。
示例1 - 2 - 2 - 3 - 4 相同的数字是:2
如何确定哪些号码相同?
这是我的代码:
package e.d_pilas;
import java.util.*;
public class ED_PILAS {
private int stck[];
private int tos;
ED_PILAS(int size){
//New stack
stck = new int[size];
tos = -1;
}
void push(int value) {
stck[++tos] = value;
}
int pop() {
if (tos < 0) {
return 0;
} else
return stck[tos--];
}
public static void main(String[] args) {
int number;
Scanner read = new Scanner (System.in);
System.out.print("Enter five (5) numbers to fill the stack \n");
ED_PILAS stack = new ED_PILAS(5);
for (int i = 1; i < 6; i++){
System.out.print("Enter the value "+i+" to fill the stack \n");
number=read.nextInt();
stack.push(number);
}
System.out.println("Equal values contained in the stack: \n");
for (int j = 1; j < 6; j++){
System.out.println("\t " + stack.pop());
}
}
}
谢谢!
答案 0 :(得分:0)
当您从堆栈中pop()
时,您可以存储在ArrayList<Integer>
中并检查每个pop()
是否已存在。如果重复,则将其打印并将其标记为已打印(以便您不再打印)。
答案 1 :(得分:0)
在第一种方法中,它只会打印一次重复条目。在第二种方法中,如果堆栈包含两个以上的条目,它将多次打印。
ArrayList<int> list=new ArrayList<int>();
for (int j = 1; j < 6; j++){
int num=stack.pop();
if(list.contains(num)){
System.out.println(num);
}
else{
list.add(num);
}
}
或强>
stack.pop()
方法删除元素,然后使用stack.search()
方法查找重复项
for (int j = 1; j < 6; j++){
int num=stack.pop();
if(stack.search(num)==1){
System.out.println(num);
}
else{
}
}
答案 2 :(得分:0)
使用此逻辑,它将适用于连续相同的值,否则使用ArrayList:
int n=stack.pop();
int dummy;
for (int j = 1; j < 6; j++){
dummy=stack.pop();
if(n==dummy)
{
System.out.println("\t The same number is " + n);
}
else{
n=dummy;
}
答案 3 :(得分:0)
使用ArrayList存储以前的pop#d值。如果在弹出过程中再次看到此值,只需打印数字。
ArrayList<Integer> popdList=new ArrayList<Integer>();
for (int j = 1; j < 6; j++){
int value=stack.pop();
if(popdList.contains(value){
System.out.println(value);
} else{
popdList.add(value);
}
}
此外,您可以编辑弹出功能,而不是更改主要功能,只返回重复的值,如下所示:
ArrayList<Integer> popdList=new ArrayList<Integer>();
int pop() {
if (tos < 0) {
return 0;
} else {
int value = stck[tos--];
if(popdList.contains(value){
return value;
} else{
popdList.add(value);
}
}
}