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

  1. //建立一个类类型的数组,并向这个数组内添加学生信息,包括姓名和年龄等
  2. **********************学生类**************************
  3. package practise03_1;
  4. public class Student {
  5. private String name;
  6. private int age;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public int getAge() {
  14. return age;
  15. }
  16. public void setAge(int age) {
  17. this.age = age;
  18. }
  19. }
  20. **************************功能类************************
  21. package practise03_1;
  22. import java.util.Scanner;
  23. public class BookDAO {
  24. Student[] a=new Student[2];
  25. Scanner sc=new Scanner(System.in);
  26. //添加学生信息
  27. public int addStudent(Student stu){
  28. for(int i=0;i<a.length;i++){
  29. System.out.println("请输入第"+(i+1)+"个学生的名字、年龄:");
  30. a[i]=new Student();//实例化一个对象,并赋值给a[i]
  31. String n =sc.next();
  32. a[i].setName(n);
  33. //System.out.println("请输入第"+(i+1)+"个学生的年龄:");
  34. int age = sc.nextInt();
  35. a[i].setAge(age);
  36. }
  37. for(int i=0;i<a.length;i++){
  38. System.out.println("第"+(i+1)+"个学生信息为:"+a[i].getName()+" "+a[i].getAge()+"岁");
  39. }
  40. return 0;
  41. }
  42. //根据名字查找
  43. public Student findName(String name){
  44. int k=0;
  45. System.out.println("请输入要查询的学生的姓名:");
  46. String b=sc.next();
  47. for(int i=0;i<a.length;i++){
  48. if(a[i].getName().equals(b)){
  49. System.out.println("该学生的年龄是:"+a[i].getAge()+"岁");
  50. k=1;
  51. break;
  52. }
  53. // else{
  54. // System.out.println("查无此人");
  55. // // break; //这儿出问题,如果第一次没查到,直接就会break,跳出循环了,后面的就查不到了
  56. // } //那么问题来了,循环内部不能判断值不一致,真查不到的时候,该如何实现输出“查无此人”呢?
  57. }
  58. //解决办法是转嫁危机,既然内部不能判断值不一致,至少可以判断值一致的情况,在判断值一致时顺便做个记号,一致时记号改变
  59. //然后在循环外部判断这个记号,如果记号不变,说明整个循环过程都没有找到值一致的情况,这时候就可以在循环外部输出“查无此人”了
  60. if(k!=1){
  61. System.out.println("查无此人");
  62. }
  63. return null;
  64. }
  65. }
  66. ****************************主类****************************
  67. package practise03_1;
  68. public class Test3_1 {
  69. public static void main(String[] args) {
  70. BookDAO b=new BookDAO();
  71. Student stu=new Student();
  72. b.addStudent(stu);
  73. b.findName("xiaomao");
  74. }
  75. }
时间: 2024-08-08 09:29:39

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

查找一个数是否在一个数组中,如果在则返回下标值,否则显示查无此人

function search(a,b){ var numb=Array(); //for (var i in a) for (var i=0;i< a.length;i++) { if (b == a[i]) { numb.push(i); } } return numb;}var b=4;var n =search([1,2,3,4,4,5,5,5,],b);if (n.length==0){ document.write('查无此人')}else{ for(var i=0;i< n.le

(算法)是否为二叉查找数的后序遍历数组

题目: 给定一数组,判断它是否为二叉查找树的后序遍历数组 思路: 想想,二叉查找数树的特点,任意根结点大于左子树的所有值,而小于右子树的所有值: 再想想,后序遍历的特点,先遍历左子树,再遍历右子树,最后是根结点: 因此很容易找到根结点,然后遍历数组找出左子树(从左往右比根结点小的),剩下右边的就是右子树,然后判断右子树是否都大于根结点: 如果是,则递归遍历左子树,遍历右子树,如果都满足了,则是某个二叉树的后序遍历数组: 如果不是,则不是. 代码: #include<iostream> usin

深度优先搜索[奥数等式、迷宫找人]

上一节我们用暴力枚举解决奥数等式,虽然简单,但是很蛋疼. http://blog.csdn.net/wtyvhreal/article/details/43267867 这一节讲用深搜的方式解决,高大上. 深度优先搜索(Depth First Search,DFS),理解深搜的关键在于解决"当下该如何做".至于"下一步如何做"则与"当下该如何做"是一样的.通常的方法就是把每一种可能都是尝试一遍.当前这一步解决后便进入下一步.下一步的解决方法和当前

给出一个数组A,找出一对 (i, j)使得A[i] &lt;= A[j] (i &lt; j)并且j-i最大

题目:给出一个数组A,找出一对 (i, j)使得A[i] <= A[j] (i <= j)并且j-i最大 ,若有多个这样的位置对,返回i最小的那一对. 最直接的想法就是对于每一个 i 从数组最尾端开始向前找到第一个大于等于 A[i] 的位置 j ,时间复杂度O(n^2). 1. pair<int, int> find(const vector<int> &A) 2. { 3. int n = A.size(); 4. if(n == 0) 5. throw ne

JavaScript基础 使用for循环遍历数组 并 查询 数组中是否存在指定的值

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

大学四年挂了五六门,清考没把握过?侥幸的找人改教务系统里挂科解决办法!

亲们请不要着急找网上的黑客改成绩, 首先,先登录教务系统,看下教务系统是什么版本,很明显,教务系统下面有版权: 学校是外面买的教务系统,如果是正方或者URP或者青果或者乾豪或者金仕达 的则可以达到目的! 首先先分析自己的成绩情况! 请注意,如果以下三点你有的话,那么我帮不了你了! 1,你是否在学校里是极其受关注的学生? 或者是挂科大王,基本全挂呢? 如果是,请绕道! 2,是否很多同学知道你挂科,身边同学知道你找关系活动去弄成绩,或者找人改,同学会举报你吗? 会请绕道! 3,是否辅导员,任课老师,

(算法:二分查找)在排序数组中,找出给定数字出现的次数

题目: 在排序数组中,找出给定数字出现的次数 思路: 既然出现排序数组,很容易想到二分查找,时间复杂度为O(logn): 先通过二分查找找到最左边出现该数字的下标left(如果没找到,则返回-1),然后通过二分查找找到最右边出现该数字的下表right(如果没找到,则返回-1),然后right-left+1就是出现的次数: 代码: #include <iostream> using namespace std; int BinarySearchCount(int *array,int len,i

二叉树 根据二叉树的前序数组和中序序遍历数组生成二叉树

题目:给定二叉树的前序遍历和中序遍历,生成二叉树. Example: 前序遍历数组:preArr[]:{1,2,4,5,3,6,7} 中序遍历数组:inArr[]:{4,2,5,1,6,3,7} 生成的二叉树如下图: 解题思路: 由二叉树的前序变量性质可知:preArr[0] 是数组的根节点,有根据二叉树的中序遍历的性质可知,{4,2,5}是二叉树的左子树,{6,3,7}在右子树上,重复执行该操作就构造出了二叉树 public class Solution { public TreeNode r

js遍历数组的错误方法

for (var index in myArray) { // don't actually do this console.log(myArray[index]); } 缺点: 数组的索引值index是String类型的“0”,“1”,“2”等等,而不是Number类型.当你进行算术运算时(“2”+1==“21”)也许并不是你期望的结果,所以运算前需要类型转换,这很不方便. 循环体不仅会遍历数组的元素,甚至连expando属性也遍历出来了.举个例子,如果你的myArray数组中有一个叫做nam