循环一直到找到合适的结束循环

有人指点的

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方法

}

 

posted @ 2023-03-13 23:31  胖豆芽  阅读(18)  评论(0编辑  收藏  举报