遍历数组按学号找人,若找到则输出信息,否则输出"查无此人"
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");
}
}
**********************学生类**************************
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");
}
}
相关文章推荐
- 【转】angularjs指令中的compile与link函数详解
- 2个无线路由器怎么连接
- Regex 手机号 座机 正则表达式
- poj 1840 哈希
- 逗比学习开始树莓派章
- hdoj2680 Choose the best route
- 分布式数据库一致性解决初步
- delphi开发学习五:QuickReoprt报表控件使用实例
- 从背后知道C语言程序是怎么运行的
- 演讲的注意事项
- 演讲的注意事项
- 百度.搜狐...2015产品经理面试题
- (算法)最长回文子串
- Java 的文件相关操作
- LeetCode之Word Ladder
- LeetCode257 BinaryTreePaths(打印根节点到叶子节点的左右路径) Java题解
- db2 hadr模式实现
- Android 中 Intent 的使用
- 大数相加
- 平衡二叉树研究(AVL树)