2012-05-20 6 views
0

Java에서이 메뉴 구조를 나타내는 더 좋은 방법이 있습니까? 문제는 내가 문자열 배열을 포함하는 배열을 선언하고 있다고 생각합니다 - 가능하지 않습니까?지그재그 배열 초기화 Java

String[][][] menu = { 
        {"1. Select Store"}, 
        { 
         {"1. Manage Stock"}, 
         { 
          {"1. Buy More"}, 
          {"2. Steal It"} 
         }, 
         {"2. Fire Employee"}, 
         {"3. Exit"} 
        }, 
        {"2. List Stores"}, 
        {"3. Exit"} 
        }; 
아직

더 나은 :

String[][][] menu = { 
        "1. Select Store", 
        { 
         "1. Manage Stock", 
         { 
          "1. Buy More", 
          "2. Steal It" 
         }, 
         "2. Fire Employee", 
         "3. Exit" 
        }, 
        "2. List Stores", 
        "3. Exit" 
        }; 

그래서 나는이 시도.

답변

1

당신은 모든 것이 그 안에 하나의 문자열로 적어도 세 가지 깊은 배열되어 있는지 확인해야합니다 아마

String[][][] menu = { 
    { { "1. Select Store" } }, 
      { { "1. Manage Stock" }, 
        { "1. Buy More", "2. Steal It" }, 
      { "2. Fire Employee" }, 
      { "3. Exit" } }, 
    { { "2. List Stores"} }, 
    { { "3. Exit" } } 
}; 

좀 더 복잡한 당신이 원하는 것보다 있지만 각 메뉴 항목은 다음을 하위 메뉴에 대해 알고있는 경우 그것을 모두 추적하는 것이 더 쉽습니다. 비슷한 들여 쓰기로 예제를 출력 할 것입니다.

public Menu(){ 
    List<Option> options = new ArrayList<Option>(); 

    Option buyMore = new Option("Buy More"); 
    Option stealIt = new Option("Steal It"); 

    Option manageStock = new Option("Manage Stock", Arrays.asList(buyMore, stealIt)); 
    Option fireEmployee = new Option("Fire Employee"); 
    Option exit = new Option("Exit"); 

    Option selectStore = new Option("Select Store", Arrays.asList(manageStock, fireEmployee, exit)); 
    Option listStores = new Option("List Stores"); 
    Option exitStore = new Option("Exit"); 

    options.addAll(Arrays.asList(selectStore, listStores, exitStore)); 

    for(int i = 0; i < options.size(); ++i){ 
     options.get(i).print("", i + 1); 
    } 
} 

class Option{ 
    String title; 
    List<Option> subOptions; 

    public Option(String title, List<Option> subOptions){ 
     this.title = title; 
     this.subOptions = subOptions; 
    } 

    public Option(String title){ 
     this.title = title; 
     this.subOptions = new ArrayList<Option>(); 
    } 

    public void print(String indent, int number){ 
     System.out.println(indent + number + ". " + title); 
     for(int i = 0; i < subOptions.size(); ++i){ 
      subOptions.get(i).print(indent + " ", i+ 1); 
     } 
    } 
} 
2

제공된 예제 데이터에 따르면 3 차원 배열이 아닌 트리 구조를 찾고 있습니다.

문자열의 3 차원 배열에서 문자열 만 포함하는 배열 만 포함하는 배열 만 포함하는 배열이 있습니다. 배열에 문자열이 포함되어 있습니다. 허용되지 않습니다.

+0

답변 해 주셔서 감사합니다. :) – tkf144