奋斗着,享受着 2022-11-21 23:28 采纳率: 100%
浏览 5
已结题

成员变量执行时值突然不知为何被改变

想要描写关于队列先进先出的算法

package com.stack;
public class Tested {
    public int[] arr1;
    public int size;
    private final static int Cap = 10;
    //无参构造(初始化数组)
    public Tested(){
        size = 0;
        arr1 = new int[Cap];
    }

    //判零
    public boolean isEmpty(){
        if(size == 0){
            return true;
        }
        return false;
    }
    //重定义数组长度
    private void resize(int newlen){
        int[] newArr = new int[newlen];
        for(int i = 0;i < size;i++){
            newArr[i] = arr1[i];
        }
        arr1 = newArr;
    }
//插入元素
    public void push(int count){
        if(size == arr1.length)
        {
            resize(arr1.length * 2);
        }
        arr1[size] = count;
        size++;
    }
//弹出元素
    public int  pop(){
        int[] arr2 = new int[arr1.length-1];
        if(isEmpty()){
            return -1;
        }
        int ret = arr1[size-1];
        int i = 0;
        while(size!=1){
            arr2[i] = arr1[size - 1];
            size--;
            i++;
        }
        int size = 0;
        while(i!=0){
            arr1[size] = arr2[i-1];
            size++;
            i--;
        }
        size--;
        return ret;
    }
//输出函数
    public void print(){
        String str = "[";
        if(arr1 == null){
            str+="]";
        }else {
            for (int i = 0; i < size; i++) {
                str += arr1[i];
                if (i != size - 1) {
                    str += ", ";
                } else {
                    str += "]";
                }
            }
        }
        System.out.println(size);
        System.out.println("a.length="+arr1.length);
        System.out.println(str);
    }

    public static void main(String[] args) {
        Tested t1 = new Tested();
        for (int i =0;i < 10;i++) {
            t1.push(i);
            t1.print();
        }
        for (int i =0;i < 10;i++) {
            t1.pop();
            t1.print();
        }

    }

}

在执行完t1.pop后,我想输出改变后的队列,结果队列中size值在执行prin函数时突然不知什么原因变成1了,导致一直只输出一个值。

  • 写回答

1条回答 默认 最新

  • Ralph Chen 2022-11-22 09:49
    关注

    img


    pop方法中把全局变量size改为1了,所以后面print方法中的size一直是1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 创建了问题 11月21日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端