不如白纸 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 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来