循环一直到找到合适的结束循环
有人指点的
package com.fqs.demo1; import java.util.Scanner; public class StudentTest { public static void main(String[]args) { //1.定义数组arr Student []arr=new Student[4]; //2.给数组赋值 Student s0=new Student("stu000","s0",36); Student s1=new Student("stu001","s1",37); Student s2=new Student("stu002","s2",38); Student s3=new Student(); //3.放入数组 arr[0]=s0; arr[1]=s1; arr[2]=s2; arr[3]=s3; //4.键盘输入s1和s2 Scanner sc=new Scanner(System.in) ; //提示输入scid System.out.println("请输入新学生的id"); String scid=sc.next(); //只有isFind=true发现重复值的时候才能走while(flag==true) ,如果没有发现,永远不会走while(flag==true) boolean flag=true; while(true) {//写死 一直循环,结束循环的条件在if语句里 System.out.println("请输入新学生的id"); scid=sc.next(); //再次判断flag的值 flag=isFind(arr,scid);//找是否寻找到flag if (flag == false) { break; } } if(flag==false){ arr[3].setId(scid); } //判断id是否和已存在的重复 //5.输出所有 for(int i=0;i<arr.length;i++) { Student temp=arr[i]; System.out.println(temp.getId()+" "+temp.getName()+" "+temp.getAge()); } }//结束main方法 //判断是否存在 //1.我要干什么 数组中的id是否重复了 //2.我需要什么来判断 数组和id //3.我需要什么结果 存在true 不存在flase public static boolean isFind(Student[]arr,String scid) { for(int i=0;i<arr.length;i++) { //1.判断数组内的id和输入的id是否重复 if(arr[i].getId() != null && arr[i].getId().equals(scid)) { System.out.println("此id被找到了,isFind返回true"); return true; } //2.如果相等说明true //3.否则返回false } System.out.println("此id没有被发现,isFind返回false"); return false; } }
第二天又写的
package com.fqs.demo1; import java.util.Scanner; public class StudentTest { public static void main(String[] args) { // 1.定义一个数组arr 存放4个学生信息 Student[] arr = new Student[4]; // 2.给4个数组赋初值 Student s0 = new Student("stu000", "s0", 18); Student s1 = new Student("stu001", "s1", 19); Student s2 = new Student("stu002", "s2", 20); Student s3 = new Student(); arr[0] = s0; arr[1] = s1; arr[2] = s2; arr[3] = s3; // 3.从键盘获取第4个学生的信息 Scanner sc = new Scanner(System.in); // 请输入学生id System.out.println("请输入学生id"); String scid = sc.next(); // 4.判断第4个学生的id是否唯一 boolean flag = true; flag = isFind(arr, scid); while (flag == true) { // 如果有重复的,再次输入 // 请输入学生id System.out.println("请再次输入学生id"); scid = sc.next(); flag = isFind(arr, scid); // 没有重复的则 跳出循环 if (flag == false) { break; } } if (flag == false) { arr[3].setId(scid); } // 5.打印数组内全部的值 for (int i = 0; i < arr.length; i++) { Student s = arr[i]; System.out.println(s.getId() + " " + s.getName() + " " + s.getAge()); } }// 结束main方法 // 1.我要干什么 获取这个scid是否在数组内已存在isFind 存在true 不存在 false // 2.我需要根据什么来判断 输入arr scid // 3.我需要获得什么 return true;return false public static boolean isFind(Student[] arr, String scid) { // 如果找到,返回真 for (int i = 0; i < arr.length; i++) { if (arr[i].getId() != null && arr[i].getId().equals(scid)) { return true; } } // 结束for循环 return false; }// 结束isFind方法 }