不如白纸 2021-12-24 18:16 采纳率: 50%
浏览 21
已结题

创建的数组没有被查找算法找到

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
package sheji;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
import sheji.RecordNode;
import sheji.BSTree;
import sheji.KeyType;
import sheji.ElementType;
public class action {
    public static <ReacordNode> void main(String[] args) {
        boolean flag = true;
        while (flag) {
            System.out.println("=================================================");
            System.out.println("请输入下列数字选择相应的操作:");
            System.out.println("1.建立家谱成员信息");
            System.out.println("2.查找家谱成员信息");
            System.out.println("3.删除家谱成员信息");
            System.out.println("4.退出");
            System.out.println("=================================================");
            System.out.print("输入的数字为:");
            Scanner sc = new Scanner(System.in);
            int num = sc.nextInt();
            BSTree bstree=new BSTree();
            switch (num) {
            case 1:
                String[]item= {"小明",
                                "小张",
                                "小李"};
                int[]k= {1002, 1001,1003};   //关键字数组
                KeyType[] key = new KeyType[k. length]; //关键字数组
                ElementType[]elem=new ElementType[k.length];  //记录数据数组
                System.out.println("原序列:");
                for (int i = 0; i<k. length; i++){
                    key[i] = new KeyType(k[i]);          //创建关键字对象
                    elem[i]= new ElementType(item[i]);  //创建记录数据对象
                    if(bstree.insertBST(key[i],elem[i])) {    //若插入对象成功
                    System.out.println("["+key[i]+","+elem[i]+"]");
                }
                }
            break;
            case 2:
                System.out.println("\n 中序遍历二叉排序树");
                bstree.inOrderTraverse(bstree.root);
                System.out.println();
                KeyType keyvalue =new KeyType();
                keyvalue.key=1002;
                RecordNode found =(RecordNode)bstree.searchBST(keyvalue);
                if(found!=null) {
                    System.out.println("按编号查找:"+keyvalue+",成功!对应家族成员为:"+found.element);
                }else {
                    System.out.println("按编号查找:"+keyvalue+",失败!");
                }
                keyvalue.key=1003;
                found=(RecordNode)bstree.searchBST(keyvalue);
                if(found!=null) {
                    System.out.println("按编号查找:"+keyvalue+",成功!对应家族成员为:"+found.element);
                }else {
                    System.out.println("按编号查找:"+keyvalue+",失败!");
                }
            
                break;
            
            case 3:
                bstree.inOrderTraverse(bstree.root);
                System.out.println();
                KeyType keyvalue1 =new KeyType();
                keyvalue1.key=1002;
                found=(RecordNode)bstree.removeBST(keyvalue1);
                if(found!=null) {
                    System.out.println("删除编号:"+keyvalue1+",成功删除:"+found.element+"!");
                }else {System.out.println("删除编号:"+keyvalue1+",失败!");
                
                }
                break;

            default:
                flag = false;
                System.out.println("退出成功");
                break;
                }
        }
}

}
        

        

    
            



    

    


运行结果及报错内容

img

我的解答思路和尝试过的方法

是不是算法弄错了

我想要达到的结果

能够查找到并且删除对应对象

  • 写回答

1条回答 默认 最新

  • riusky 2021-12-25 04:04
    关注

    建议如下图
    对象的初始化如果在循环体里面,每次重新进入循环是没有保存数据的,建议写在while 上面

    img

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

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 12月24日

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能