两天以来我一直在尝试解决这个问题。我无法理解我犯了什么错误。
我正在实现一个Stack类Stack1,它有方法push、pop和peak。
在每个测试用例的 Stack1 类的主要方法中,我创建 Stack1 堆栈并根据用户给出的输入执行“n”插入、弹出和峰值操作
程序正在接受输入,但不提供任何输出
相反,它只是在接受输入后终止
如果有人能帮助我,那就太好了。 谢谢您
这是我的代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class Stack1 {
static final int max=1000000;
int top;
int[] arr=new int[max];
Stack1()
{
this.top=-1;
}
public void push(int val)
{
if(top<max-1)
this.arr[++top]=val;
}
public int pop()
{
if(top!=-1)
return arr[top--];
return -110;
}
public int peak()
{
if(top!=-1)
{
int maxi=arr[0];
for(int i=0;i<=top;i++)
{
if(maxi<arr[i])
maxi=arr[i];
}
return maxi;
}
return -1;
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int t=Integer.parseInt(br.readLine());
Stack1[] st=new Stack1[t];
for(int i=0;i<t;i++)
{
st[i]=new Stack1();
int n=Integer.parseInt(br.readLine());
while(n-->0)
{
String[] str=br.readLine().split(" ");
if(str.length==2)
{
int k=Integer.parseInt(str[1]);
st[i].push(k);
}
if(str[0]=="R")
{
int r=st[i].pop();
if(r==-1)
bw.write("Empty\n");
else
bw.write(r+"\n");
}
if(str[0]=="Q")
{
int q=st[i].peak();
if(q==-1)
bw.write("Empty\n");
else
bw.write(q+"\n");
}
}
}
bw.flush();
}
}
不知道哪里出了问题 它接受所有输入但不提供任何输出 //
最佳答案
str[0]=="Q"
和 str[0]=="R"
将始终返回 false
。
==
是基元的关系运算符。
您需要使用对象实现的 equals 方法来比较对象。这是 Java 中的一个常见错误。
关于java - 为什么我的 java 堆栈程序终止而不给出输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58181227/