lang String

0

Więc napisałem funkcje i testuje ją i w kompilatorze działa ok ale w testerce na necie wyskakuje błąd kompliacji

Operator.java:69: incompatible types
found   : java.lang.String
required: int
public int funkcja(String a){
 
int i=0;
     
     switch (a) {
    case "a":
      i = 1;
      break;
 
    case "b":
      i = 2;
      break;

default:
      System.out.println("Blad wykonania");
  }

 return i;    
 }

Pytam bo głupio by było to na ify zamieniać, a może istnieje jakaś ina możliwość...

0

String-switche zostały zaimplementowane dopiero w Java SE 7 (po 16 latach od pierwszego requestu o to ;P), więc zgaduję, że na testerce jest starsza wersja Javy.

0

Do poczytania - http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java


A jeśli o sam kod chodzi, to nie mów, że chcesz robić case dla każdej litery... Jeśli taka jest zasada, że dla a = 1, b = 2, c = 3 itd. to lepiej będzie sprawdzić czy znak mieści się w odpowiednim przedziale i jeśli się mieści to obliczyć wartość dla zmiennej i bazując na kodzie ASCII.

0

do case podaje operatory logiczne więc przedział raczej nie wchodzi w gre ale spróbuje przerobić to na kod ascci i myślę że przejdzie...

0

Dlaczego to nie działa?

System.out.println(Integer.parseInt("+"));
0

Pytanie: dlaczego miałoby to działać i co miałoby zwracać?
Przeczytaj, jak działa metoda parseInt.

0

Ok już wszystko wiem. Wielkie dzięki za pomoc,a poradziłem sobie tak

public int sprawdzPriority(String element){

char a;
int i=0,ascii;

    a = element.charAt(0);  
    ascii = (int) a;

Oczywiście działa tylko wtedy gdy podajemy pojedynczy znak np właśnie "+"

0

Ewentualnie możesz zrobić coś w rodzaju:

switch (policz_hash(zmienna)) {
 case //...

1 użytkowników online, w tym zalogowanych: 0, gości: 1