看了JAVA视频后,有感而发,所以就
设计一个学生查询系统
学生信息只有   姓名 ,编号,分数
此3个数据在一个类中
通过姓名和编号查询到该学生的分数
程序的效果:神秘代码     新手勿喷
import java.util.Scanner;
 
 
public class Student {
private static final String String = null;
 
public static void main(String [] args){
System.out.println("The school inquiry system");
System.out.println("Please choose student name or id to inquiry");
System.out.println("Choose 1 is student name ; 2 is student id ");
Student s = new Student();
Student.Choose(); //调用Choose 来进行选择和调用方法
}
public static void Choose (){
Scanner s = new Scanner(System.in);
int num = s.nextInt();
if(num==1){
System.out.println("Please key student name ");
String namer = s.next();   //定义namer 为查询学生名字
System.out.println(namer);
Student.Name(namer);
}else if(num==2){
System.out.println("Please key student id ");
int ider = s.nextInt();  //定义ider 为查询学生编号
System.out.println(ider);
Student.Id(ider);
}else{
System.out.println("You key num is erro ");
}
}
public static void Name(String namer){
System.out.println(namer);
int b=0;
Student.Database(namer, b);
}
public static  void Id(int ider){
System.out.println(ider);
int a=0;
Student.Database(String, ider);
}
public static void Database(String a,int b){ //学生数据库   以数组的形式存储,如[Name,Id,Score]
String [][]str={{"张三","001","90"},{"李四","002","65"},{"王五","003","85"}};
for(int i=0;i<=2;i++){
for(int j=0;j<=2;j++ ){
//if(b == str[i][j]){
System.out.println("姓名:"+str[i][j-1]+",编号:"+str[i][j]+",分数:"+str[i][j+1]);
}
}
}
}
//}

解决方案 »

  1.   


    import java.util.Scanner;public class Student {
    private static final String String = null; public static void main(String[] args) {
    System.out.println("The school inquiry system");
    System.out.println("Please choose student name or id to inquiry");
    System.out.println("Choose 1 is student name ; 2 is student id ");
    Student.Choose(); // 调用Choose 来进行选择和调用方法
    } public static void Choose() {
    Scanner s = new Scanner(System.in);
    int num = s.nextInt();
    if (num == 1) {
    System.out.println("Please key student name ");
    String namer = s.next(); // 定义namer 为查询学生名字
    System.out.println(namer);
    Student.Name(namer);
    } else if (num == 2) {
    System.out.println("Please key student id ");
    String ider = s.next(); // 定义ider 为查询学生编号
    System.out.println(ider);
    Student.Id(ider);
    } else {
    System.out.println("You key num is erro ");
    }
    } public static void Name(String namer) {
    System.out.println(namer);
    String b = null;
    Student.Database(namer, b);
    } public static void Id(String ider) {
    System.out.println(ider);
    Student.Database(String, ider);
    } public static void Database(String a, String b) { // 学生数据库
    // 以数组的形式存储,如[Name,Id,Score]
    String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
    { "王五", "003", "85" } };
    boolean find = false;
    for (int i = 0; i <= 2; i++) {
    if(a != null){
    if(str[i][0].equals(a)){
    System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
    + str[i][2]);
    find = true;
    }
    }else{
    if(str[i][1].equals(b)){
    System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1] + ",分数:"
    + str[i][2]);
    find = true;
    }
    }
    }
    if(!find){
    System.out.println("查无此人");
    }
    }
    }
    // }
      

  2.   

    大神   为什么中间会输出多一次  我的输入内容呢?
    如:
    he school inquiry system
    Please choose student name or id to inquiry
    Choose 1 is student name ; 2 is student id 
    2
    Please key student id 
    001
    001001
    姓名:张三,编号:001,分数:90
      

  3.   

    大神   为什么中间会输出多一次  我的输入内容呢?
    如:
    he school inquiry system
    Please choose student name or id to inquiry
    Choose 1 is student name ; 2 is student id 
    2
    Please key student id 
    001
    001001
    姓名:张三,编号:001,分数:90

    你把不需要的System.out.println去掉就行了
      

  4.   

    he school inquiry system
    Please choose student name or id to inquiry
    Choose 1 is student name ; 2 is student id 
    2
    Please key student id 
    001
    001
    001
    姓名:张三,编号:001,分数:90
      

  5.   

    没时间做题,给你点建议就是下次定义字段名,方法名的时候,首字母请小写。。那个String String亮瞎了我的双眼。。
      

  6.   

    你这程序BUG和逻辑上的缺陷有点多,
    尽量少改了些,写了如下的程序,希望能帮到你。package com;import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;public class Test4 {
    private static final String String = null; public static void main(String[] args) {

    Test4 t = new Test4();
    Student student=t.getStuScore();
    if(student==null){
    System.out.println("未查找到该学生");
    }else{
    System.out.println(student.toString());
    }
    } public Student getStuScore() {
    //创建学生对象来存储学生信息
    Student student=new Student();
    System.out.println("The school inquiry system");

    //输入学生信息来选择学生
    choose(student);
    //学生已经存好了信息
    if(student.getId()!=null)
    return selectById(student);
    if(student.getName()!=null)
    return selectByName(student);
    return null;
    } public static void choose(Student student) {
    System.out.println("Please choose student name or id to inquiry");
    System.out.println("Choose 1 is student name ; 2 is student id ");
    Scanner s = new Scanner(System.in);
    int num = s.nextInt();
    if (num == 1) {
    System.out.println("Please key student name ");
    String name = s.next(); // 定义namer 为查询学生名字
    System.out.println(name);//这里其实应该加一些正则格式验证,就先不写了。。
    student.setName(name);
    } else if (num == 2) {
    System.out.println("Please key student id ");
    String id = s.next(); // 定义ider 为查询学生编号
    System.out.println(id);
    student.setId(id);
    } else {
    System.out.println("You key num is erro ");
    }
    } public static Student selectByName(Student student) {
    System.out.println("根据姓名:"+student.getName()+"查询");
    List<Student> database = Database();
    for(Student stu:database){
    if(stu.getName().equals(student.getName())){
    return stu;
    }
    }
    return null;
    } public static Student selectById(Student student) {
    System.out.println("根据学号:"+student.getId()+"查询");
    List<Student> database = Database();
    for(Student stu:database){
    if(stu.getId().equals(student.getId())){
    return stu;
    }
    }
    return null;
    } /**
     * 返回list型对象,等于把数据封装好了
     */
    public static List<Student> Database() { // 学生数据库
    // 以数组的形式存储,如[Name,Id,Score]
    String[][] str = { { "张三", "001", "90" }, { "李四", "002", "65" },
    { "王五", "003", "85" } };
    System.out.println("数据库如下:");
    for (int i = 0; i <= 2; i++) {
    System.out.println("姓名:" + str[i][0] + ",编号:" + str[i][1]+ ",分数:" + str[i][2]);
    }
    List<Student> list=new ArrayList<>();
    for(int i=0;i<str.length;i++){
    Student student=new Student();
    for(int j=0;j<str[i].length;j++){
    student.setName(str[i][0]);
    student.setId(str[i][1]);
    student.setScore(Integer.parseInt(str[i][2]));
    }
    list.add(student);
    }
    return list;
    }}class Student {
    private String id;
    private String name;
    private int score; public Student() { } public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public int getScore() {
    return score;
    } public void setScore(int score) {
    this.score = score;
    } @Override
    public String toString() {
    return "Student [id=" + id + ", name=" + name + ", score=" + score
    + "]";
    }

    }