ohmyGG 2022-11-30 20:42 采纳率: 87.5%
浏览 35
已结题

arraylist查询添加数据出现重复

为什么使用arraylist添加多个信息后再查询时全变成了输入的最后一个信息
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        ArrayList<yonghu> array=new ArrayList<yonghu>();
        ArrayList<shangpin> array1=new ArrayList<shangpin>();
        while (true) {
            System.out.println("///////////////////欢迎来到网上商店////////////////////////////////");
            System.out.println("0 退出");
            System.out.println("1 用户注册");
            System.out.println("2 用户登录");
            System.out.println("3 进入管理员模式");
            Scanner scanner = new Scanner(System.in);
            String a = scanner.nextLine();
            yonghu y = new yonghu();
            switch (a) {
                case "0":
                    System.out.println("感谢使用");
                    System.exit(0);
                    break;
                case "1":
                    System.out.println("1 用户注册");
                    yonghuzhuce(array);
                    break;
                case "2":
                    System.out.println("2 用户登录");
                    yonghudenglu(array);
                    break;

                case "3":
                    System.out.println("3 管理员模式登录");
                    guanliyuandenglu(array);
                    break;

                default:
                    System.out.println("输入命令有误,请重新输入!");
            }
        }

    }

    private static void guanliyuandenglu(ArrayList<yonghu> array) {
        Scanner sc=new Scanner(System.in);
        String zh1;
        String mm1;
        while(true) {
            System.out.println("请输入管理员账号");
            zh1=sc.nextLine();
            System.out.println("请输入管理员密码");
            mm1=sc.nextLine();
            if (zh1.equals("asd")&&mm1.equals("123")){
                System.out.println("账号密码正确");
                guanliyuan(array);
                break;
            }else {
                System.out.println("账号或密码错误,请重新登录,或注册后再进行登录");
                break;
            }
        }
    }

    private static void guanliyuan(ArrayList<yonghu> array) {
        while (true)
        {
            System.out.println("///////////////////欢迎来到网上商店管理员系统////////////////////////////////");
            System.out.println("0 切换正常登录");
            System.out.println("1 商店商品管理");
            System.out.println("2 用户信息管理");
            System.out.println("3 订单信息管理");
            Scanner scanner=new Scanner(System.in);
            String b=scanner.nextLine();
            dingdan s=new dingdan();
            switch (b){
                case"0":
                    System.out.println("感谢使用");
                    yonghudenglu(array);
                    break;
                case"1":
                    System.out.println("商品管理菜单");
                    shangpingaunli(array);
                    break;
                case"2":
                    System.out.println("用户信息管理菜单");
                    yonghuxinxiguanli(array);
                case"3":
                    System.out.println("订单信息管理菜单");
                    dingdanxinxi(array);
                default:
                    System.out.println("输入命令有误,请重新输入!");
            }

        }
    }

    private static void dingdanxinxi(ArrayList<yonghu> array) {
    }

    private static void yonghuxinxiguanli(ArrayList<yonghu> array) {
        while (true)
        {
            System.out.println("///////////////////欢迎来到网上商店管理系统////////////////////////////////");
            System.out.println("0 退回");
            System.out.println("1 用户全部信息查看");
            System.out.println("2 指定账户查询");
            System.out.println("3 用户信息修改");
            System.out.println("4 用户信息删除");


            Scanner scanner=new Scanner(System.in);
            String b=scanner.nextLine();
            switch (b){
                case"0":
                    System.out.println("感谢使用");
                    guanliyuan(array);
                    break;
                case"1":
                    System.out.println("用户全部信息查看");
                    yonghuxinxichakan(array);
                    break;
                case"2":
                    System.out.println("指定账户查询");
                    zhidingyonghuxinxi(array);
                    break;
                case"3":
                    System.out.println("用户信息修改");
                    yonghuxinxixiugai(array);
                    break;
                case"4":
                    System.out.println("用户信息删除");
                    yonghuxinxishanchu(array);

                default:
                    System.out.println("输入命令有误,请重新输入!");
            }

        }
    }

    private static void yonghuxinxishanchu(ArrayList<yonghu> array) {
    }

    private static void yonghuxinxixiugai(ArrayList<yonghu> array) {
    }

    private static void zhidingyonghuxinxi(ArrayList<yonghu> array) {
    }

    private static void yonghuxinxichakan(ArrayList<yonghu> array) {
        if (array.size()==0){
            System.out.println("无信息,请先添加信息后再查询");
            return;//为了往下执行,而不是卡在这
        }
        System.out.println("用户名\t\t账号\t\t密码\t\t");
        //从集合中取出数据按照对应格式显示学生信息
        for(int i=0;i< array.size();i++){
            yonghu yh=array.get(i);
            System.out.println(yh.getName()+"\t\t"+yh.getZhanghao()+"\t\t"+yh.getMima());

        }

    }

    private static void shangpingaunli(ArrayList<yonghu> array) {
    }


    private static void yonghudenglu(ArrayList<yonghu> array) {
        Scanner sc=new Scanner(System.in);
        String zh;
        String mm;

        while(true) {
            System.out.println("请输入账号");
            zh=sc.nextLine();
            System.out.println("请输入账号密码");
            mm=sc.nextLine();
            boolean flag1=f1(array,zh);
            boolean flag2=f2(array,mm);
            if (flag1 && flag2){
                System.out.println("账号密码正确");
                shangdiancaidan(array);

            }else {

                System.out.println("账号或密码错误,请重新登录,或注册后再进行登录");
                break;
            }

        }
    }

    private static void shangdiancaidan(ArrayList<yonghu> array) {

        System.out.println("0 退出账号");
        System.out.println("1 查看用户个人信息");
        System.out.println("2 商店商品选购");
        Scanner scanner=new Scanner(System.in);
        String a=scanner.nextLine();
        switch (a){
            case"0":
                System.out.println("感谢使用");

                break;

            case"1":
                System.out.println("1 查看用户个人信息");
                gerenyonghuxinxichakan(array);
                break;
            case"2":
                System.out.println("2 商品选购");
                shangpinxuangou();
                break;
            default:
                System.out.println("输入命令有误,请重新输入!");
        }


    }

    private static void shangpinxuangou() {
    }

    private static void gerenyonghuxinxichakan(ArrayList<yonghu> array) {
        if (array.size()==0){
            System.out.println("无信息,请先添加信息后再查询");
            return;//为了往下执行,而不是卡在这
        }
        System.out.println("用户名\t\t账号\t\t密码\t\t");
        //从集合中取出数据按照对应格式显示学生信息
        for(int i=0;i< array.size();i++){
            yonghu yh=array.get(i);
            System.out.println(yh.getName()+"\t\t"+yh.getZhanghao()+"\t\t"+yh.getMima());

        }


    }

    private static boolean f2(ArrayList<yonghu> array, String mm)//判断密码是否正确
    {
        boolean flag1=false;
        for(int i=0;i<array.size();i++)
        {
            yonghu yh=array.get(i);

            if(yh.getMima().equals((mm))){
                flag1=true;
                break;
            }
        }

        return flag1;}
    private static boolean f1(ArrayList<yonghu> array, String zh) //判断账号是否正确存在
    {
        boolean flag2=false;
        for(int i=0;i<array.size();i++)
        {
            yonghu yh=array.get(i);

            if(yh.getZhanghao().equals((zh))){
                flag2=true;
                break;
            }
        }
        return flag2;}

    private static void yonghuzhuce(ArrayList<yonghu> array) {

        Scanner sc=new Scanner(System.in);
        // 为了在while外访问Name
        String Name;
        String zhanghao;
        String mima;
        String dizhi;
        while(true){
            System.out.println("请输入账号名");
            Name= sc.nextLine();
            System.out.println("请注册账号");
            zhanghao= sc.nextLine();
            boolean flag=Name(array,Name);
            System.out.println("请注册密码");
            mima= sc.nextLine();
            System.out.println("请输入收货地址");
            dizhi= sc.nextLine();
            boolean flag3=Name1(array,zhanghao);
            //创建对象,将键盘录入的数据赋值给对象中的成员变量
            yonghu yh=new yonghu();
            yh.setName(Name);
            yh.setZhanghao(zhanghao);
            yh.setMima(mima);
            yh.setDizhi(dizhi);
            //将对象添加到集合中,并提示成功
            array.add(yh);

            if(flag3==true && flag==true){
                System.out.println("您输入的账号名已使用,请重新输入:");

            } else{System.out.println("注册成功");
                break;
            }
        }
    }
    private static boolean Name(ArrayList<yonghu> array, String name)//看是否存在
    {
        boolean flag=false;
        for(int i=0;i<array.size();i++)
        {
            yonghu yh=array.get(i);

            if(yonghu.getName().equals((name))){
                flag=true;
                break;
            }
        }


        return flag;}
    private static boolean Name1(ArrayList<yonghu> array, String zhanghao)//看是否存在
    {
        boolean flag3=false;
        for(int i=0;i<array.size();i++)
        {
            yonghu yh=array.get(i);

            if(yonghu.getZhanghao().equals((zhanghao))){
                flag3=true;
                break;
            }
        }


        return flag3;
    }
}


yonghu.java

import java.util.ArrayList;
import java.util.Scanner;

public class yonghu {
    private static String Name;//用户名

    private static String zhanghao;//账号

    private static String mima;//密码
    private String dizhi;//地址



    public static String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }



    public static String getZhanghao() {
        return zhanghao;
    }

    public void setZhanghao(String zhanghao) {
        this.zhanghao = zhanghao;
    }

    public static String getMima() {
        return mima;
    }

    public void setMima(String mima) {
        this.mima = mima;
    }

    public String getDizhi() {
        return dizhi;
    }

    public void setDizhi(String dizhi) {
        this.dizhi = dizhi;
    }

    public yonghu() {
    }

    public yonghu(String name, String sex, String zhanghao, String mima, String dizhi) {
        Name = name;

        this.zhanghao = zhanghao;
        this.mima = mima;
        this.dizhi = dizhi;
    }

shangpin.java

public class shangpin {
    private String name;//商品名
    private String jiage;//价格
    private String changshang;//厂商


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getJiage() {
        return jiage;
    }

    public void setJiage(String jiage) {
        this.jiage = jiage;
    }

    public String getChangshang() {
        return changshang;
    }

    public void setChangshang(String changshang) {
        this.changshang = changshang;
    }

    public shangpin() {
    }

    public shangpin(String name, String jiage, String changshang) {
        this.name = name;
        this.jiage = jiage;
        this.changshang = changshang;
    }


}



   

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2022-11-30 20:53
    关注

    你是注册了两个账号,然后管理员登录进去查看 用户信息,发现如下是吧?

    img


    因为用户的信息,成员变量定义的是静态的, 类共享的,注意一下,最后一次初始化的用户信息就是最终展示的。

    img


    修改:
    (1)去除 用户信息 中的 static 修饰符, 变量和方法都要去掉。
    (2)main方法中有两处,需要改成从 用户实例对象中获取

    运行结果:

    img

    PS:
    (1)类的命名 要规范,首字母大写,驼峰命名。
    (2)方法和 变量命名,首字母小写,驼峰命名。


    如有帮助,欢迎采纳哈!

    在这里插入图片描述

    本人的开源项目,欢迎star支持下!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 创建了问题 11月30日

悬赏问题

  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 这个公式写进SIMULINK中的function模块的代码中应该是什么样的
  • ¥15 javaweb登陆的网页为什么不能正确连接查询数据库
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程
  • ¥15 layui数据表格多次重载的数据覆盖问题
  • ¥15 python点云生成mesh精度不够怎么办