如何在java上显示堆栈中的最大数字

如何在java上显示堆栈中的最大数字,java,stack,Java,Stack,我有下面的代码和一个名为stack的类,以及一个push方法 你能帮助我如何制作一个方法来显示堆栈中的最大数吗?请帮我写一个非常简单的代码,我是初学者,我不懂java,只有5% class stack1 { int maxsize,top; String arr[]; int maxsize1; stack1 (int maxsize){ this.maxsize=maxsize; arr=new String[maxsize];

我有下面的代码和一个名为stack的类,以及一个push方法 你能帮助我如何制作一个方法来显示堆栈中的最大数吗?请帮我写一个非常简单的代码,我是初学者,我不懂java,只有5%

class stack1 {
    int maxsize,top;
    String arr[];
    int maxsize1;
    stack1 (int maxsize){
       this.maxsize=maxsize;
       arr=new String[maxsize];
       top=0;
    }
    void push (String data) {
       if (top<maxsize) {
          arr[top]=data;
          top++;
       } else {
          System.out.print("stack is overflow");
       }
    }
    public static void main(String arg[]) {
       stack1 s=new stack1(4);
       s.push("1");
       s.push("2");
       s.push("3");
       s.push("4");
    }
}
类堆栈1{
int-maxsize,顶部;
字符串arr[];
int-maxsize1;
stack1(int-maxsize){
这个.maxsize=maxsize;
arr=新字符串[maxsize];
top=0;
}
无效推送(字符串数据){

如果(top而不是像现在这样使用字符串数组中的所有数字,则应使用整数数组(
int[]
)、浮点数字数组(
float[]
)或其他类型的数字基元数据类型(您可以在上阅读有关它们的更多信息)

假设您将自己的
int[]
array
arr
,您可以创建一个方法,该方法循环遍历所有数字,并将存储函数末尾返回的最高值:

int maximumValue() {
  int maximum = Integer.MIN_VALUE;

  for (int value : arr) {
    if (value > maximum) {
      maximum = value;
    }
  }

  return maximum;
}

这不是最有效的方法,但排序起到了关键作用:

    Arrays.sort(stack);
    System.out.println(Arrays.asList(stack));
    System.out.println(stack[stack.length - 1]); //stack[stack.length - 1] is the max
由于您使用的是字符串,因此得到的排序将是lexographic。要使用数字,可以将堆栈更改为整数:

    String arr[]; becomes int arr[];
    void push (String data) becomes void push (int data)
    s.push("4") becomes s.push(4)
要获得最大值,可以将此方法添加到类中:

int getMax() {
    Arrays.sort(arr);
    return arr[arr.length - 1];
}
然后你就这样称呼它:

int max = s.getMax();

我写了这篇文章,它成功了!非常感谢,但是你能告诉我“int max=Integer.MIN_VALUE;”是什么意思吗?Java具有可容纳整数、双精度、浮点、短值等的最小可能值的常数。由于我们需要最大值,并将其与以前的值进行比较,我们可以将起始值设置为Java可以存储的最小值,因此返回值始终保证为最大值。但您的意思是什么通过`Arrays.sort(stack);`放在括号内的是什么?我应该放对象名“s”还是“arr”?Arrays.sort将接受数组,在您的例子中是变量“arr”,因此Arrays.sort(arr)。您可以添加一个新方法:int-getMax(){Arrays.sort(arr);返回arr[arr.length-1];}如果“java-非静态变量arr不能从静态引用…”正确,该方法不能是静态方法。您可能添加了“static”关键字。我已将此方法添加到答案中。我使用了第一个答案代码,用于最大数
int-max(){int-max=0;用于(int-value:arr){if(值>最大值)最大值=值;}返回最大值;}
但我想用堆栈上最小值的相同代码,你能对该方法进行更改吗?这样它可以处理最小值,我尝试将大于改为小于,但它显示“零值”。。。