湘M 2021-10-06 01:22 采纳率: 50%
浏览 24
已结题

自定义数组String 类型查找出错

//不知道为什么查找一直出错
//请问各位大佬有知道原因的吗?
package Kid;

import java.util.Scanner;

public class AC {
    public static void main(String[] args) {
        Scanner sd = new Scanner(System.in);
        System.out.println("请输入小朋友人数:");
        Kid k = new Kid();
        Kid[] m = new Kid[sd.nextInt()];
        for(int i=0;i<m.length;i++){
            m[i]=new Kid();
            System.out.println("请输入第" + (i + 1) + "个小朋友");
            String name = sd.next();
            int age = sd.nextInt();
            m[i].name=name;
            m[i].age=age;
        }

        System.out.println("输入完成-请输入需要查找的小朋友:");
        String na=sd.next();
        k.setName(na);
        int temp= k.isExist(m);
        if(temp==-1) {
         System.out.println("有误");
        }

        else {
            System.out.println("小朋友是第" + (temp + 1) + "个小朋友");
            System.out.println(m[temp].name + "今年" + m[temp].age + "岁啦");
        }
    }
}

class Kid {
    int age;
    String name;
    void setName(String n){
        this.name=n;
    }
    void setKid(String name,int age){
        this.name=name;
        this.age=age;
    }
    int isExist(Kid[] a) {
        for (int i=0;i<a.length-1;i++){
            if(a[i].name==this.name)
                return i;
        }
        return -1;
    }
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-10-06 01:27
    关注

    字符串比较需要用equals()
    if(a[i].name==this.name)
    改为
    if(a[i].name.equals(this.name))

    代码修改如下:

    package Kid;
    import java.util.Scanner;
    public class AC {
        public static void main(String[] args) {
            Scanner sd = new Scanner(System.in);
            System.out.println("请输入小朋友人数:");
            Kid k = new Kid();
            Kid[] m = new Kid[sd.nextInt()];
            for(int i=0;i<m.length;i++){
                m[i]=new Kid();
                System.out.println("请输入第" + (i + 1) + "个小朋友");
                String name = sd.next();
                int age = sd.nextInt();
                m[i].name=name;
                m[i].age=age;
            }
            System.out.println("输入完成-请输入需要查找的小朋友:");
            String na=sd.next();
            k.setName(na);
            int temp= k.isExist(m);
            if(temp==-1) {
             System.out.println("有误");
            }
            else {
                System.out.println("小朋友是第" + (temp + 1) + "个小朋友");
                System.out.println(m[temp].name + "今年" + m[temp].age + "岁啦");
            }
        }
    }
    class Kid {
        int age;
        String name;
        void setName(String n){
            this.name=n;
        }
        void setKid(String name,int age){
            this.name=name;
            this.age=age;
        }
        int isExist(Kid[] a) {
            for (int i=0;i<a.length-1;i++){
                if(a[i].name.equals(this.name))
                    return i;
            }
            return -1;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。