题目描述:
输入N个学生的信息,然后进行查询
输入:
输入的第一行为N,即学生的个数(N<=1000)
接下来N行表示N个学生的信息,格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出:
输出M行,每行包括一个对应于查询的学生的信息。如果没有对应的学生信息,则输出"No Answer!"
示例代码:
import java.io.BufferedInputStream;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void binarySearch(int number,Student[] students){
int i = 0;
int j = students.length;
int medium = (i+j)/2;
//[Attention:注意区分全局变量和局部变量,while中medium的改变会影响students[medium].number的值]
while (number!= students[medium].number){
if (i>j){
System.out.println("No answer");
break;}
if (number<students[medium].number){j=medium-1;}
else {i=medium+1;}
medium = (i+j)/2;
}
DecimalFormat decimalFormat = new DecimalFormat("00");
System.out.println(decimalFormat.format(students[medium].number)+" "+students[medium].name+" "+students[medium].sex+" "+students[medium].age);
}
public static void main(String[] args){
Scanner scanner = new Scanner(new BufferedInputStream(System.in));
while (scanner.hasNext()){
int n = scanner.nextInt();
Student[] students = new Student[n];
for (int i=0;i<n;i++){
int std_num = scanner.nextInt();
String std_name = scanner.next();
String std_sex = scanner.next();
int std_age = scanner.nextInt();
students[i] = new Student(std_num,std_name,std_sex,std_age);
}
Arrays.sort(students,0,n,new cmp());
// System.out.println("################");
// for (int i=0;i<n;i++){
// System.out.println(students[i].number+" "+students[i].name+" "+students[i].sex+" "+students[i].age); }
// System.out.println("################");
int cnt = scanner.nextInt();
for (int i=0;i<cnt;i++){
int stdnum = scanner.nextInt();
binarySearch(stdnum,students);
}
}
}
}
public class Student {
int number;
String name;
String sex;
int age;
//constructor
public Student(int number,String name,String sex,int age){
this.number = number;
this.name = name;
this.sex = sex;
this.age = age;
}
}
import java.util.Comparator;
public class cmp implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
if(o1.number<o2.number){return -1;}
else {return 1;}
}
}