2016-04-08 14 views
-1

Sadece bunun için en iyi yolun ne olduğunu merak ediyorum. Temel olarak üç farklı marka ismine sahip bir enum sınıfım var. Oluşturduğum programda, kullanıcının hangi markayı değiştirmek istediğini seçmesi ve seçilen markayı değiştirmek için bir string girebilmesi gerekiyor.Enum'un değerini tarayıcıdan girilen bir dizeye değiştirme? - Java

Enemlerin işleyişini ve userInput adlı bir değişken oluşturmayı denediğim ve enum değerini bu değere atamaya çalıştığım herhangi bir şeyi bilmiyorum.

Herhangi bir fikri olan var mı? şerefe

DÜZENLEME: AŞAĞIDA MY YÖNTEM:

public void updateBrand(Scanner input) { 

     boolean valid = false; 
     int selection; 
     System.out.println("The list of available brands are below:"); 
     System.out.println("1 - " + Brand.Highstreet); 
     System.out.println("2 - " + Brand.TedBaker); 
     System.out.println("3 - " + Brand.FrenchConnection); 

     do { 
      System.out.println("Please enter the number of the Brand you wish to change."); 
      if (input.hasNextInt()) { 
       selection = input.nextInt(); 
       if (selection < 1 || selection > 3) { 
        valid = false; 
        input.nextLine(); 
       System.out.println("Please enter a number betwen 1 and 3"); 
       } else 
        valid = true; 
        System.out.println("You have selected number: " + selection); 
        if (selection == 1) { 
         System.out.println("Please enter the changes you want to make to the brand :" + Brand.Highstreet); 
         System.out.println("New brand name : "); 
         String newBrand = input.nextLine(); 
         Brand.Highstreet.???? 
         //error on line above?? not sure what code to use. 
        } 
      } 

     } while (!valid); 
    } 

Benim Enum Sınıfı:

package SuitProg; 

public enum Brand { 

    Highstreet,TedBaker,FrenchConnection; 

    public String st; 

    void Brand(String s){ 
     this.st = s; 
    } 

    void change(String newString) { 
     this.st = newString; 
    } 

    String getContent() { 
     return this.st; 
    } 

} 
+0

Enum sınıfınız 'Mario' olarak adlandırılıyorsa ve 3 üyesinden biri "Luigi" olarak adlandırılırsa "Mario markası = Mario.Luigi;" yazabilirsiniz. Bundan hata almamalısın. – SantiBailors

+0

Söz konusu yöntemimin kodu şimdi postada yer almaktadır. Enum sınıfım Marka ve 3 öğe FrenchConnection, Highstreet ve TedBaker. Highstreet'i kullanıcıdan bir string girişine çevirmek için yönteme ihtiyacım var, örneğin inputtedString .. – Liam

cevap

1

Örnek kod

class Test 
{ 
    enum MyEnum 
    { 
     BRAND_1("A brand"), 
     BRAND_2("A second brand"), 
     BRAND_3("A third brand"); 

     private String st; 

     MyEnum(String s) 
     { 
      this.st = s; 
     } 

     void change(String newString) 
     { 
      this.st = newString; 
     } 

     String getContent() 
     { 
      return this.st; 
     } 
    } 

    public static void main(String...args) 
    { 
     MyEnum c1 = MyEnum.BRAND_2; 

     c1.change("A magic brand!"); 

     System.out.println(MyEnum.BRAND_2.getContent()); 
    } 
} 

Hintçe, çeteleler tasarlanmıştır

bir enum değerleri değiştirmek için sabit olarak davranmak için, amacınız için başka bir yapı türü kullanabilirsiniz

+0

olarak adlandırılan bir değişken, bunları işlemek için enum sınıfında yöntemleriniz olmalı? ve .getContent() ve .toString() yöntemleri arasındaki fark nedir? null – Liam

+1

Ayrıca özel String st; 'public String st; 'olarak da bildirebilir ve doğrudan değiştirebilirsiniz. Hiçbir fark yoktur, sadece bunu geçersiz kılmadım, ama sadece yazdırabilirsiniz 'st' – Nadir

+0

Yazılıma yukarıdaki enum sınıfının kodunu yayınladım. Uygulama şimdi çalışıyor ama gerçekten ne emin değilim Bu kodun özel olarak yapıyor. Marka yöntemi geçersizdir? – Liam

İlgili konular