for循环中的循环被忽略了吗?

时间:2013-11-07 17:56:30

标签: java arrays for-loop

请阅读编辑 我有一个大学的任务,我必须创建多个数组并用用户输入填充它们的名称,地址,以前的等级等。 我创建了一个“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循环并进入下一个条件。 (哪个doesent包含一个循环) 我该如何解决这个问题?我希望程序重新处理条件,如果它无效而不向i添加1或继续下一个条件。

编辑:只是为了澄清这是我希望实现的最终产品: for loop {  for loop {   要求姓名    如果名称不正确(包含数字,符号或为空,请重新填写问题。

重复6个不同的问题 } 重复8次,每个问题得到7个正确的答案

编辑编辑:现在显示完整代码。我的目的是让程序取名并继续使用另一个和另一个地址的另一个重复循环。只有在给出正确的条目时才继续。

1 个答案:

答案 0 :(得分:0)

你从第二个for循环开始,学生名长度,然后你的条件是小于8.因此,如果你的所有学生的长度都大于8,那么这个循环确实会被忽略。修复此问题以执行您真正希望它执行的操作。

我的猜测是你希望循环看起来像这样:

for (int name = 0; name < studentname.length; name++) {
...
}