2016-03-21 41 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; 
    } 

... 

}