在用户指定的条件下使用 while 循环

Using while loop on a user specified condition

所以,下面是我的代码:

public class StudentRun {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] names = new String[50];
        int[] rolls = new int[50];
        System.out.print("Do you want to register a student ?(yes/no): ");
        String res = sc.nextLine();
        while((res.toUpperCase()).equals("YES")) {
            System.out.print("Enter the student's name: ");
            String n = sc.nextLine();
            for(int i=1; i<50; i++) {
                names[i] = n;
            }
            System.out.print("Enter their roll number: ");
            int r = sc.nextInt();
            for(int j=0; j<50; j++) {
                rolls[j] = r;
            }
            
        }
        for(int a=0; a<50; a++) {
            System.out.println(names[a]);
            System.out.println(rolls[a]);
        }
        
        
    
    }
    
}

我想要的是,程序应该继续注册学生姓名和学号。直到数组已满或用户结束它。我该怎么做 ?我已经做到了

您需要在 while 循环中使用“继续”问题,而不需要每次插入名称时都使用 for 循环。

public class StudentRun {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] names = new String[50];
        int[] rolls = new int[50];
        int index = 0;

        while(true) {
            System.out.print("Do you want to register a student ?(yes/no): ");
            String res = sc.nextLine();

            if(res.toUpperCase().equals("NO") || index == 50)
                break;

            System.out.print("Enter the student's name: ");
            String n = sc.nextLine();

            names[index] = n;

            System.out.print("Enter their roll number: ");
            int r = sc.nextInt();

            rolls[index] = r;

            index++;
        }

        for(int i=0; i<50; i++) {
            System.out.println(names[i]);
            System.out.println(rolls[i]);
        }
    }

}

使用固定大小的数组时的一种常见方法是使用单独的 int 变量来跟踪新项目的当前索引位置,以及数组中已使用的槽总数:

import java.util.*;
class Main {
  
  public static void main(String[] args)
  {
    Scanner sc = new Scanner(System.in);
    int size = 50;    
    String[] names = new String[size];
    int[] rolls = new int[size];
    
    int counter = 0;
    String res = "";
    do {
      System.out.print("Do you want to register a student ?(yes/no): ");
      res = sc.nextLine().toUpperCase();
      if (res.equals("YES")) {
        System.out.print("Enter the student's name: ");
        names[counter] = sc.nextLine();

        System.out.print("Enter their roll number: ");
        rolls[counter] = sc.nextInt();
        sc.nextLine(); // clear enter out of buffer;
        
        counter++;
      }      
    } while (counter < size && res.equals("YES"));
  
    for(int a=0; a<counter; a++) {
        System.out.print(names[a] + " : ");
        System.out.println(rolls[a]);
    }
  }
  
}