mitsushima46 2021-09-19 13:44 采纳率: 100%
浏览 375
已结题

Java编程小题目,就这样

在这个用户管理系统中,分别用两个一维数组保存用户名和在线时长,不同数组中相同下标的元素为同一用户的信息,
已知:
int OnlineTime[]={50,60,65,80,92,95,150,90}
String userName[]={"Tom","Xiaoming","Xiaogang","admin","Jeson","Lily","Ruby","Mike"}
编写重载方法分别根据用户在线时长和用户名查询用户在线信息(注意时间姓名可能有相同的值)
【测试用例1】
输入:95输出:用户名:Lily 在线时长:95秒
【测试用例2】
输入:Mike输出:用户名:Mike 在线时长:90秒
【测试用例3】
输入:Mike 90输出:用户名:Mike 在线时长:90秒

  • 写回答

3条回答 默认 最新

  • 阿巴阿巴0_0 2021-09-19 22:06
    关注

    我写个获取键盘的给你吧

    import java.util.HashSet;
    import java.util.Scanner;
    import java.util.Set;
    
    public class Test {
    
        int OnlineTime[]={50,60,65,80,92,95,150,90};
        String userName[]={"Tom","Xiaoming","Xiaogang","admin","Jeson","Lily","Ruby","Mike"};
    
        public static void main(String[] args) {
            Test t=new Test();
            Scanner scanner=new Scanner(System.in);
            String s=scanner.nextLine();
            int index=s.indexOf(" ");
            String name=null;
            int time=-1;
            if(index>=0){
                name=s.substring(0,index);
                time=Integer.valueOf(s.substring(index+1));
            }
            else {
                try {
                    time=Integer.valueOf(s);
                }
                catch (Exception e){
                    name=s;
                }
            }
    
            int[] arr1=t.select(name,time);
            System.out.println("输出:");
            for (int i = 0; i < arr1.length; i++) {
                System.out.println("用户名:"+t.userName[arr1[i]]+"  在线时长:"+t.OnlineTime[arr1[i]]);
            }
        }
    
        public int[] select(int time){
            return select(null,time);
        }
        public int[] select(String name){
            return select(name,-1);
        }
        public int[] select(String name,int time){
            Set<Integer> set=new HashSet<Integer>();
            if(name!=null){
                for (int i = 0; i < userName.length; i++) {
                    if(name.equals(userName[i])){
                        set.add(i);
                    }
                }
            }
    
            boolean finded=false;
            if(time!=-1){
                for (int i = 0; i < OnlineTime.length; i++) {
                    if(OnlineTime[i]==time){
                        if(name==null){
                            set.add(i);
                            finded=true;
                        }
                        else {
                            for (int index:set) {
                                if(i==index){
                                    finded=true;
                                    return new int[]{i};
                                }
    
                            }
                        }
                    }
                }
            }
    
            if(time!=-1 && !finded){
                return new int[]{};
            }
    
            int[] ret=new int[set.size()];
            int i=0;
            for (int index:set) {
                ret[i++]=index;
            }
            return ret;
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月19日

悬赏问题

  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上