2016-03-21 24 views
1

我试图建立一个食谱程序,要求人们提供有关食谱的信息并存储它。 该菜单位于一个只是运行的case语句中,并且他们将任何数字推送给他们正在尝试访问的东西。但是,无论何时按下任何按钮,它都会跳过该选项中的内容并返回菜单。我尝试过调试,但它似乎识别输入,然后返回到菜单。这里的类和第一种方法试图访问(但不会)试图做一个简单的食谱程序

package potluck; 
import java.util.*; 

import potluck.*; 

public class Controller { 
    private Scanner input; 
    private Member member; 
    private AdminMember admin; 

    private final static int USER_LOGIN = 0; 
    private final static int CREATE_MEMBER = 1; 
    private final static int CREATE_ADMIN = 2; 
    private final static int CREATE_RECIPE = 3; 
    private final static int COMMENT = 4; 
    private final static int DELETE_RECIPE = 5; 
    private final static int EXIT = 8; 

    public Controller(){ 
     input = new Scanner(System.in); 
     startUp();//no better name to be thought of 
    } 

    public void startUp() { 
     // TODO Auto-generated method stub 
     int choice; 
     do { 
      this.displayMenu(); 
      choice = input.nextInt(); 
      input.nextLine();// clears carriage return 
      //depending on choice takes to a different menu 
      switch (choice) { 
//    case USER_LOGIN: 
//     member.enterPassword(); 
//     break; 
     case CREATE_MEMBER: 
      new Member(); 
      break; 
     case CREATE_ADMIN: 
      Member.addAdmin(); 
      break; 
     case CREATE_RECIPE: 
      Recipe.addRecipe(); 
      break; 
     case COMMENT: 
      Recipe.addComment(); 
      break; 
     case DELETE_RECIPE: 
      Recipe.deleteRecipe(); 
      break; 
     case EXIT: 
      System.out.println("Thanks for using our software"); 
      System.exit(choice); 
      break; 
     default: 
      System.out.println("Error, Invalid selection."); 
     } 
    } while (choice != 8); //choice 8 exits 
} 
private void displayMenu() { 
    System.out.println("1 Create Member"); 
    System.out.println("2 Create Admin Member"); 
    System.out.println("3 Create Recipe"); 
    System.out.println("4 Leave Comment"); 
    System.out.println("5 Delete Recipe"); 
    System.out.println("8 Exit"); 
    System.out.println("Please enter menu option, to exit enter 8"); 
    } 
} 

这里是它的尝试访问成员类。 包装食品; import java.util.Scanner; public class Member {

private int memberID = 0; 
private String name; 
private String alias; 
private String email; 
private String username; 
private String password; 
private Scanner scanner = new Scanner (System.in); 

public void Member(){ //constructor 
    memberID =+ 1; 
    name = ""; 
    alias = ""; 
    email = ""; 
    username = ""; 
    password = ""; 

    setName(); 
    setAlias(); 
    setEmail(); 
    setUsername(); 
    setPassword(); 
    System.out.println("Member Created"); 
    } 

    public void addMember() { 
    new Member(); 
    } 

所以就像一个概括。我只是试图让CREATE_MEMBER选项在目前工作。不管它有什么问题,其余的可能也是错误的。

+0

你无所事事的会员。它一旦被创建就会被销毁。实际上,'public void Member()'不是构造函数。构造函数没有返回类型。这应该可能是'public Member()'你正在使用代码中不存在的隐式构造函数。 –

回答

4

你是不是你分配到Member您的变量:

member = new Member(); 

另外请注意,你所谓的构造其实也不是一个。您需要删除的void为它是一个:

public Member() { //constructor 
    // code 
} 
2

您使用Member类像调用它static方法。你必须调用构造函数并创建你的类的实例。

Member member = new Member(); 

任何类的构造函数不需要返回类型,所以删除void字。

public Member() { 
    ... 
} 

如果你想添加1您MEMBERID为属于**所有*的情况下,你必须定义变量static全球变量。所以:

private static int memberID = 0; 

最后你的addmember(..)方法什么都不做。如果您想在创建的实例Member member = new Member();内初始化实例变量,则必须修改构造函数或创建大量setter。

public class Member { 

    // constructor 
    public Member(String name, String alias ...) { 
     this.name = name; 
     this.alias = alias; 

     ... 

    } 

    // setters 
    public void setName(String name) { 
     this.name = name; 
    } 

    public void setAlias(String alias) { 
     this.alias = alias; 
    } 

... 

} 
相关问题