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

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日

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100