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

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条回答 默认 最新

  • 冰岛少年 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条)

相关推荐 更多相似问题