• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java typy wyliczeniowe Enum (zadanie)

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
861 wizyt
pytanie zadane 15 stycznia 2017 w Java przez Szymon Ciamaga Obywatel (1,980 p.)

Witam mam do wykonania takie zadanie. 3 jest zrobione tylko mam problem z dodatkowym 3.1

3.

Napisz

program, w którym wykorzystując typ wyliczeniowy o wybranej przez siebie nazwie zdefiniujesz 4 wartości

reprezentujące kierunki świata:

NORTH, EAST, SOUTH, WE

ST

Typ wyliczeniowy powinien przechowywać informację z tłumaczeniem danego kierunku

geograficznego na język polski (północ,wschód)

itd

...

 W drugiej klasie wyświetl wszystkie kierunki geograficzne, wczytaj od użytkownika w którym kierunku chce się poruszać i wyświetl na ekranie potwierdzenie wyboru. Przykład: Podaj kierunek geograficzny:

>NORTH

Ok więc idziemy na północ

3.1

(dodatkowe)

W typie wyliczeniowym zdefiniuj dodatkową metodę convert(int num), która na podstawie przekazanego parametru (0, 1, 2, lub 3) zwraca wartość typu wyliczeniowego, odpowiednio:

0 NORTH

1 EAST

2 SOUTH

3 WEST

W typie wyliczeniowym zdefiniuj także dodatkową wartość UNDEFINED("nieznany"),

który będzie zwracany w przypadku, gdy jako argument metody przekazana zostanie

wartość inna niż 0,1,2,3

to co mam teraz

 

public enum Speed {
    SLOW(30),
    NORMAL(90),
    FAST(150);

    private final int speedEnum;

   private Speed(int speedEnum) {
        this.speedEnum = speedEnum;
    }

    public void printSpeed() {
        System.out.println(this.speedEnum);
    }

    public int getSpeedEnum() {
        return speedEnum;
    }


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        Speed[] values = Speed.values();

        for (Speed value : values) {
            System.out.println(value);
        }

        System.out.print("Wybierz prędkość: ");
        String choose = scanner.nextLine();
        //normal

        Speed userSpeed = Speed.valueOf(choose);

        System.out.println("poruszasz się z prędkością: " + userSpeed + " która wynosi " + userSpeed.getSpeedEnum());

    }
}

 

 

 

1 odpowiedź

+1 głos
odpowiedź 15 stycznia 2017 przez Wojciech Cies Obywatel (1,140 p.)
wybrane 16 stycznia 2017 przez Szymon Ciamaga
 
Najlepsza

Nie do końca jest jasne, czy chodzi o pobranie wg kolejności zdefiniowania zmiennych, czy arbitralne przypisanie kodów. Na wszelki wypadek rozwiązania na dwa sposoby :)

 

enum Speed {
  SLOW(30),
  NORMAL(90),
  FAST(150);

  private final int speedEnum;

  private Speed(int speedEnum) {
    this.speedEnum = speedEnum;
  }

  public void printSpeed() {
    System.out.println(this.speedEnum);
  }

  public int getSpeedEnum() {
    return speedEnum;
  }

  public static Speed convert(int num) {
    if (num >= 0 && num < Speed.values().length) {
      return Speed.values()[num];
    } else {
      throw new IllegalArgumentException("Incorrect index: " + num);
    }
  }

  public static Speed convert2(int num) {
    switch (num) {
      case 10:
        return SLOW;
      case 12:
        return NORMAL;
      case 123:
        return FAST;
      default:
        throw new IllegalArgumentException("Incorrect index: " + num);
    }
  }

 

Podobne pytania

0 głosów
1 odpowiedź 913 wizyt
pytanie zadane 28 maja 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
4 odpowiedzi 1,653 wizyt
pytanie zadane 5 października 2018 w Java przez Potopiec Obywatel (1,550 p.)
0 głosów
1 odpowiedź 944 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)

93,434 zapytań

142,429 odpowiedzi

322,663 komentarzy

62,799 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...