2014-11-05 15 views
0

我正在用Java编程来做一个简单的程序来模拟某些东西,像Facebook菜单,只是为了练习面向对象的编程。这是事情;如何在其他类中使用变量来重复某些操作? (Java)

在一个名为“决定”的类中,用户输入'0'退出,'1'注册或'2'登录。

我希望程序在用户注册或登录后返回主菜单,因为在下面的代码中,当用户既不注册,也不登录程序结束。

所使用的变量被称为''选项'',我想我必须在主类中使用它来做我想做的事(重复主菜单)。

这里是我的代码:

class Decision { // THIS IS THE CLASS FOR ENTER THE OPTION. 

    protected byte option; // THIS IS THE VARIABLE. 

    public Decision() { 

     boolean aux = true; // THIS IS ONLY FOR VALIDATE WRONG INPUT. 
     Scanner sc = new Scanner(System.in); 
     do { 
      try { 
       System.out.println("\n\t\t\t*-------------------------------*"); 
       System.out.println("\t\t\t\t  FACEBOOK"); 
       System.out.println("\t\t\t*-------------------------------*\n"); 
       System.out.println("0.-EXIT FACEBOOK\n"); 
       System.out.println("1.-SIGN UP\n"); 
       System.out.println("2.-LOG IN\n"); 
       option = sc.nextByte(); 
       aux = true; 
       if (option >= 3 || option < 0) { 
        aux = false; 
        System.out.println("\nPLEASE INSERT A VALID OPTION.\n"); 
       } 
       if (option == 0) { 
        System.out.println("\nSEE YOU SOON.\n"); 
        aux = true; 
       } 
      } catch (InputMismatchException exc) { 
       aux = false; 
       sc.nextLine(); 
       System.out.println("\nPLEASE INSERT A VALID OPTION.\n"); 
      } 
     } while (aux == false); // I USE THIS FOR VALIDATE THE INPUT, DO NOT 
           // WORRY AT ALL. 

    }// CONSTRUCTOR 
}// Decision 

class Data extends Decision { // THIS IS THE CLASS FOR ENTER DATA (NAME, LAST 
           // NAME, ETC) 

    Scanner sc = new Scanner(System.in); 

    public void Title() { 
     System.out.println("\n\t\t\t*-------------------------------*"); 
     System.out.println("\t\t\t\t  FACEBOOK"); 
     System.out.println("\t\t\t*-------------------------------*\n"); 
    }// Title 

    public void Decision() { 

     if (option == 1) { 
      // IN THIS PART THE USER IS CREATING A PROFILE AND STUFF. 

     } else { 
      if (option == 2) { 
       // IN THIS PART THE USER ONLY LOG IN AND THE SEE THE INFO. 
      } 
     }// else 

    }// Decision 

}// DATA 

public class Facebook { // AND THIS IS THE MAIN CLASS 

    protected Decision option; 

    public Facebook() { 
     option = new Decision(); 
    }// CONSTRUCTOR 

    public static void main(String args[]) { 

     Facebook facebook = new Facebook(); 

    }// main 

}// Facebook 
+0

重要提示:请勿将逻辑放入构造函数中。把它放在方法中。 – tom 2014-11-05 23:44:08

+0

'数据'从不使用 – ToYonos 2014-11-05 23:45:13

回答

0

如果你想重复的东西在节目中,自然答案应该是你使用一个循环。改变退出条件aux == false(最好是!aux,它是等效的,但编程风格更好)。例如:

// initialize it to false in case the first iteration of the loop throws an exception 
boolean exit = false; 
do { 
    //... 
    exit = option == 0; 
while (!exit); 
相关问题