Java 此代码的输出不正确,

Java 此代码的输出不正确,,java,Java,今年夏天,我正在复习一些编程,我做了如下的问题。 编写一个方法collapse,该方法将整数堆栈作为参数,并通过将每一个连续的整数对替换为整数对的和来进行折叠 基本上,我的方法是返回堆栈的相反顺序,除非堆栈中有奇数个数字,否则我至少要返回总和,不管顺序如何。 我应该只使用一个队列 我的问题是我哪里做错了,为什么我不能把我的两个pops相加呢。 公共静态堆栈崩溃 { 底部[7,2,8,9,4,13,7,1,9,10]顶部 第一对应折叠成9 7+2,第二对应折叠成17 8+9,第三对应折叠成17 4

今年夏天,我正在复习一些编程,我做了如下的问题。 编写一个方法collapse,该方法将整数堆栈作为参数,并通过将每一个连续的整数对替换为整数对的和来进行折叠

基本上,我的方法是返回堆栈的相反顺序,除非堆栈中有奇数个数字,否则我至少要返回总和,不管顺序如何。 我应该只使用一个队列 我的问题是我哪里做错了,为什么我不能把我的两个pops相加呢。 公共静态堆栈崩溃 {

底部[7,2,8,9,4,13,7,1,9,10]顶部 第一对应折叠成9 7+2,第二对应折叠成17 8+9,第三对应折叠成17 4+13,依此类推,以产生:


底部[9,17,17,8,19]顶部

这部分代码将是无限循环:

 if(sO.empty()){

        qN.add(x1); break;
    }
您正在从队列中删除x1,然后再次将其添加回队列

通过挡块修改下半身

 while(!qN.isEmpty())
        {
            x1=qN.remove();
            x2=qN.remove();
            sO.push(x1+x2);
        }

记住:如果元素的数量是奇数,那么在最后一次迭代中x2将为空。注意它。

那么您实际得到的是什么输出?
 while(!qN.isEmpty())
        {
            x1=qN.remove();
            x2=qN.remove();
            sO.push(x1+x2);
        }