java返回程序中的特定点

时间:2015-05-13 19:30:56

标签: java

我有下一个问题。我的程序具有以下结构:

loadContext();
showCategories(input);
showProjects(input);
showdetails();

在每一步中,我作为用户都能够跳转到上一步。例如,我按0并且程序返回到previos步骤。按1 - 程序从头开始。 Java中是否有任何工具可以达到特定的目的?

修改 我这里有控制台应用程序。主要方法如下:

loadContext();//Loads categories
showCategories(input);//shows available categories and ask for which category to show
showProjects(input);// shows all projects inside selested category and select which project to show in details
showdetails();//show selected project

现在我想设置选项。例如,在 showProjects(输入)中输入0并再次查看类别,选择它并查看类别。在 showdetails()中选择0并返回显示类别,选择一个,依此类推。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

  1. 用另一种方法包裹所有四种方法:

       private void programStart(){
           loadContext();
           showCategories(input);
           showProjects(input);
           showdetails();
       }
    
  2. 然后有一个像这样的方法:

       private void processUserInput(int selOption) {
           if(selOption == 0){
               showCategories();
           }
           else if(selOption == 1){
               programStart();
           }
           else{
              System.out.println("Unsupported option");                  
           }
       }  
    
  3. 在您希望使用此选项的每种方法的末尾:

    一个。用户阅读选项
     湾使用输入

  4. 致电processUserInput(input)

答案 1 :(得分:0)

while循环中的switch语句怎么样?使用户能够选择要跳转到的步骤。这是任何语言的工具,而不仅仅是Java,可以达到任何特定点。

我已经使用了java.util.Scanner,因为你希望它是一个控制台应用程序,尽管在2015年我们倾向于使用图形用户界面或网页来完成这项工作:

if (!String.IsNullOrWhiteSpace(form["contactemail"]))
{
    string contactemail = form["contactemail"];
    IList<int> bookingids = bookings.Select(x => x.bookingid).ToList();
    IQueryable<contact> con = (from y in db.bookingscontacts where bookingids.Contains(y.bookingid) select y.contact);
    //EDIT:        I hadn't included the email filter...
    IQueryable<contact> conmatches = (from c in con where c.email1.Contains(contactemail) select c);
    IList<int> contactids = conmatches.Select(x => x.contactsid).ToList();

    bookings = (from r in bookings from c in db.bookingscontacts where contactids.Contains(c.contactsid) && bookingids.Contains(r.bookingid) select r);
}