生成迭代菜单时遇到麻烦

时间:2016-01-10 07:03:10

标签: java loops while-loop

我的目标是为出勤模块创建一个菜单。我想要用户的两条信息,学生的部分和部门编号。例如,他的部分可以是A,部分编号可以是3.除非输入的这些值都正确,否则我的程序无法继续。所以我决定创建一个菜单,它将一直运行,直到没有输入正确的数据。

注意: - 变量dummy是Student类的对象,我用它来检查输入的数据是否有效。如果您认为错误与这些方法有某些联系,那么请告诉我。我会做一个编辑。

System.out.println("Welcome to the Attendance Module");
     int str=0;
     String f="";
     Student dummy=new Student();
     int flag=1;
     while(flag==1)
     {
         System.out.println("Please enter the section whose Attendance you would like to mark:A,B,C or D");
     System.out.println("Note that Input is case sensitive");
     f=bw.readLine();
     if(dummy.valid_section(f))// If the input of the section by the user is Valid
     {  
         System.out.println("Enter the Section number");//Can be 1,2,3,4 or 5
         str=Integer.parseInt(bw.readLine());
         if(dummy.valid_stream(str))// If the input of the section number by the user is Valid
          {  flag=0;
               break; //Both inputs are correct
            }
            else 
            flag=1;  // When the Section is correct but the Section number is incorrect
        }

        else
        {System.out.println("Invalid entry. Please try again by pressing 1. Otherwise,press 0 to quit");
           flag=Integer.parseInt(bw.readLine());
        }
    }

当我运行此程序时,循环不会终止。我不明白为什么?我已经放置了break语句并在需要的地方更改了flag的值。

根据用户的建议,我已经包含了在此程序中调用的Student类的两种方法。它们如下:

class Student
{ // Some code...

boolean valid_form(String x)
{  
if((x.equals("A"))||(x.equals("B"))|(x.equals("C"))||(x.equals("D")))
     { return true;
    }
    else 
    return false;
}
boolean valid_stream(int n)
{ if(stream>=1&&stream<=5)
    { return true;
    }
    else 
    return false;
}

0 个答案:

没有答案