请阅读编辑我有一个大学作业,我必须创建多个数组并用用户输入的姓名、地址、以前的年级等填充它们。我创建了一个“for”循环来运行,直到为多个条件给出 8 个正确条目。我的第一个条件就是名字。我添加了代码来停止不正确的条目(在这种情况下是数字和符号,并让它停止空白条目。
int studentno[]=new int[8]; //Array for student number
String studentname[]=new String[8]; //Array for student name
String studentadd[]=new String[8]; //Array for address of student
char studentgrade[]=new char[8]; //Array for previous grade
int studentass1[]=new int[8]; //Array for Computing Programming Assignment1
int studentass2[]=new int[8]; //Array for Computing Programming Assignment2
int studentexam[]=new int[8]; //Array for Computing Programming Exam
for (int i = 0;i<8;i++) { //Creates for loop that will run 8 time
//unless an incorrect input is inputted
studentno[i] = 37000 + (int)(Math.random() * ((38000 - 37000) + 1));
//Generates random numbers within a range I
//specified to mimic college system.
for (int name = 0; name < studentname.length; name++) {
studentname[i] = JOptionPane.showInputDialog(
"Please enter Student name. \n You have entered data for "
+i+" students so far.");
Pattern pno = Pattern.compile("[0-9,&%$#@!()*^]");
Matcher mno = pno.matcher(studentname[i]);
if (mno.find()) {
JOptionPane.showMessageDialog(null, "Please enter only letters.");
name--;
}
else if (studentname[i] != null && !studentname[i].isEmpty()) {
JOptionPane.showMessageDialog(null, "You have not entered any data");
name--;
}
这在我看来是正确的,但是当我运行程序时,它会完全跳过第二个 for 循环并进入我的下一个条件。(其中不包含一个循环)我将如何解决这个问题?我希望程序在不向 i 添加 1 或继续下一个条件的情况下重新询问条件是否无效。
编辑:只是为了澄清这是我希望实现的最终产品: for loop{ for loop{ 如果名称不正确(包含数字、符号或为空,则询问名称)重新提出问题。
重复 6 个不同的问题 } 重复 8 次,每个问题得到 7 个正确答案
编辑编辑:现在显示完整代码。我的目的是让程序取一个名字,然后进入另一个重复的循环,地址是一个又一个。只有在给出正确的条目时才能继续。