您的位置:首页 > 其它

遍历数组按学号找人,若找到则输出信息,否则输出"查无此人"

2015-08-20 21:48 411 查看
//建立一个类类型的数组,并向这个数组内添加学生信息,包括姓名和年龄等

**********************学生类**************************

package practise03_1;

public class Student {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

**************************功能类************************

package practise03_1;

import java.util.Scanner;

public class BookDAO {

Student[] a=new Student[2];

Scanner sc=new Scanner(System.in);

//添加学生信息

public int addStudent(Student stu){

for(int i=0;i<a.length;i++){

System.out.println("请输入第"+(i+1)+"个学生的名字、年龄:");

a[i]=new Student();//实例化一个对象,并赋值给a[i]

String n =sc.next();

a[i].setName(n);

//System.out.println("请输入第"+(i+1)+"个学生的年龄:");

int age = sc.nextInt();

a[i].setAge(age);

}

for(int i=0;i<a.length;i++){

System.out.println("第"+(i+1)+"个学生信息为:"+a[i].getName()+" "+a[i].getAge()+"岁");

}

return 0;

}

//根据名字查找

public Student findName(String name){

int k=0;//定义一个标记

System.out.println("请输入要查询的学生的姓名:");

String b=sc.next();

for(int i=0;i<a.length;i++){

if(a[i].getName().equals(b)){

System.out.println("该学生的年龄是:"+a[i].getAge()+"岁");

k=1; //此处做一个标记,记录循环的执行情况

break;

}

// else{

// System.out.println("查无此人");

// // break; //这儿出问题,如果第一次没查到,直接就会break,跳出循环了,后面的就查不到了

// } //那么问题来了,循环内部不能判断值不一致,真查不到的时候,该如何实现输出“查无此人”呢?

}

//解决办法是转嫁危机,把值传出去,既然内部不能判断值不一致,至少可以判断值一致的情况,在判断值一致时顺便做个记号,一致时记号改变

//然后在循环外部判断这个记号,如果记号不变,说明整个循环过程都没有找到值一致的情况,这时候就可以在循环外部输出“查无此人”了

if(k!=1){ //利用标记情况,在循环外部做判断

System.out.println("查无此人");

}

return null;

}

}

****************************主类****************************

package practise03_1;

public class Test3_1 {

public static void main(String[] args) {

BookDAO b=new BookDAO();

Student stu=new Student();

b.addStudent(stu);

b.findName("xiaomao");

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: