在这个用户管理系统中,分别用两个一维数组保存用户名和在线时长,不同数组中相同下标的元素为同一用户的信息,
已知:
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秒
我写个获取键盘的给你吧
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;
}
}
import java.util.HashSet;
import java.util.Set;
public class Test {
int OnlineTime[]={50,90,65,80,92,95,150,90};
String userName[]={"Tom","Xiaoming","Xiaogang","admin","Jeson","Tom","Ruby","Mike"};
public static void main(String[] args) {
Test t=new Test();
int[] arr1=t.select("Tom",90);
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;
}
}
我没获取键盘信息啊,我只是写了重载方法,然后在main方法调用了