工学义子 2022-12-25 15:55 采纳率: 52.3%
浏览 13
已结题

java的查找函数问题

为什么我的这个查找函数只能查找直接赋值的内容,但是不能查找输入的内容?我输入的和直接赋值的都是String类型啊,为什么会这样?
这是控制台截图:

img

这是代码:

package myPackage;

import java.util.Scanner;

public class MyDictionary {
    public static void  menu() {    //打印菜单
        System.out.println("----------菜单----------");
        System.out.println("1----------------查找单词");
        System.out.println("2----------------删除单词");
        System.out.println("3----------------增加单词");
        System.out.println("4----------------修改单词");
        System.out.println("0----------------退出程序");
    }
    public static String search(String[][] dict,String ch) {    //查找
        for (int i = 0; dict[i][0]!=null; i++) {
            if(dict[i][0]==ch) {
                return dict[i][1];
            }
        }
        return "字典中没有录入该单词。";
    }
    public static void delete(String[][] dict,String ch) {    //删除
        if(search(dict, ch)=="字典中没有录入该单词。") {
            System.out.println("字典中没有录入该单词,无法进行删除操作!");
            return;
        }
        for (int i = 0; dict[i][0]!=null; i++) {
            if(dict[i][0]==ch) {
                for (int j = i; dict[j][0]!=null; j++) {
                    dict[j][0]=dict[j+1][0];
                    dict[j][1]=dict[j+1][1];
                }
                System.out.println("删除成功!");
            }
        }
    }
    public static void add(String[][] dict,String ch,String en) {    //增加
        if(search(dict, ch)==en) {
            System.out.println("字典中已有该单词,无需添加。");
            return;
        }
        int length=0;
        for (int i = 0; dict[i][0]!=null; i++) {
            length++;
        }
        dict[length][0]=ch;
        dict[length][1]=en;
        System.out.println("单词"+en+"添加成功!");
    }
    public static void replace(String[][] dict,String ch,String newch,String newen) {    //修改
        if(search(dict, ch)=="字典中没有录入该单词。") {
            System.out.println("字典中没有录入该单词,无法进行修改操作!");
            return;
        }
        for (int i = 0; dict[i][0]!=null; i++) {
            if(dict[i][0]==ch) {
                dict[i][0]=newch;
                dict[i][1]=newen;
                System.out.println("单词"+ch+"已成功替换为"+newch);
            }
        }
    }
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String[][] dict=new String[1000][2];
        //初始化字典内容
        dict[0][0]="苹果";
        dict[0][1]="Apple";
        dict[1][0]="香蕉";
        dict[1][1]="Banana";
        dict[2][0]="橘子";
        dict[2][1]="Orange";
        dict[3][0]="草莓";
        dict[3][1]="Strawberry";
        dict[4][0]="樱桃";
        dict[4][1]="Cherry";
        int command;
        System.out.println("请输入你要查找的:");
        String objString=input.next();
        System.out.println(objString.getClass().getSimpleName());
        System.out.println("苹果".getClass().getSimpleName());
        System.out.println(search(dict, "苹果"));
        System.out.println(search(dict, objString));
    }
}

  • 写回答

1条回答 默认 最新

  • pzzhao 2022-12-25 16:21
    关注

    String 类型的值比较是否相等需要用String的equal方法,直接==比较的是他们的地址值

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 设计一个温度闭环控制系统
  • ¥100 关于加载卡的问题有能知道这个要怎么处理吗?
  • ¥100 rtmpose姿态评估
  • ¥15 java 通过反射找路径下的类,打包后就找不到
  • ¥15 通联支付网上收银统一下单接口
  • ¥15 angular有偿编写,
  • ¥15 centos7系统下abinit安装时make出错
  • ¥15 hbuildex运行微信小程序报错
  • ¥15 关于#python#的问题:我知道这个问题对你们来说肯定so easy
  • ¥15 wpf datagrid如何实现多层表头