工学义子 2022-12-25 15:55 采纳率: 57.5%
浏览 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日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备