2017-02-12 4 views
-1

У меня нет идеи, как добавить в массив перечислений. Я создал конструктор, используя поля с перечислением и его работы, но я не знаю, как сделать его в конструкторе без поля. Я надеюсь, что вы поймете, о чем я думаю. В моем коде я комментирую, где я думаю, что у меня проблема. У меня есть:Как я могу создать конструктор без полей с перечислением?

public enum Components { 
    WIFI, BLUETOOTH, CAMERA, SSD 
} 

public Laptop(){ 
    System.out.println("name of producer:"); 
    String producername = Main.sc.nextLine(); 
    System.out.println("name of model:"); 
    String modelname = Main.sc.nextLine(); 
    System.out.println("ram:"); 
    int ram = Main.sc.nextInt(); 
    System.out.println("cpu:"); 
    String cpu = Main.sc.nextLine(); 
    cpu = Main.sc.nextLine(); 
    System.out.println("components:"); 
    System.out.println("how many components do you want to add?"); 
    int z = Main.sc.nextInt(); 
    Components[] com = new Components[z]; 
    for(int i=0; i<com.length;i++){ 
     com[i] = //<-- how to add enum in array? 
    } 

    setProducerName(producername); 
    setModelName(modelname); 
    setRam(ram); 
    setCpu(cpu); 
    setComponents(com); 
} 

Мой конструктор, используя поле, как это, и это работает.

public Laptop(String ProducerName, String ModelName, int Ram, String Cpu, Components... components) { 
    super(); 
    this.ProducerName= ProducerName; 
    this.ModelName= ModelName; 
    this.Ram= Ram; 
    this.Cpu= Cpu; 
    this.components= new Components[components.length]; 
    this.components= Arrays.copyOf(components, components.length); 
} 

Помогите.

ответ

0

Я не 100% ясно, что вы просите, но вы можете получить массив, заполненный с перечисляемых констант из самого перечисления: Components.values() будет возвращать массив все перечисления констант. Это существенно вернуться:

new Components[]{Components.WIFI, Components.BLUETOOTH, 
    Components.CAMERA, Components.SSD} 

Стороны рекомендация: не используйте сканер внутри вашего конструктора ноутбуков, а на самом деле, получить весь код пользовательского интерфейса из всех конструкторов и методов экземпляра этого класса. Весь код пользовательского интерфейса принадлежит в другом месте.

1

Вы можете получить значение enum по его названию.

public enum Components { 
    WIFI, BLUETOOTH, CAMERA, SSD 
} 

public Laptop(){ 
    ... 
    Components[] com = new Components[z]; 
    for(int i=0; i<com.length;i++){ 
     com[i] = Components.valueOf(Main.sc.nextLine()); 
    } 
    ... 
} 
Смежные вопросы