2017-08-22 2 views
-2

Je suis nouveau sur java et essaye d'écrire un switch. Où, selon une valeur de deviner, un prix différent sera donné. Je fais quelque chose de mal parce que le compilateur dit variable déjà défini. Mais comment ne puis-je pas le définir, de sorte que le commutateur sait quelle valeur rechercher pour donner quel prix?Utilisation de switch en Java pour assigner des valeurs supplémentaires

if (guess == randomNom) 
{ 
    System.out.println(" You Win! "); 
    player.setEarning(player.getEarn() + guess * 10); 

    int reward = guess; 
    String prize = ""; 

    switch(reward) 
     { 
    case 1: int reward = 10; 
      String prize = " Prize #1"; 
    break; 

    case 2: int reward = 20 ; 
     String prize = "Prize #2"; 
    break; 

    case 3: int reward = 30; 
     String prize = "Prize #3"; 
    break; 

    ... 
} 
+4

Il suffit de retirer 'CHAINE' devant tous les énoncés' '= chaîne prix, sauf la première (et même avec 'int' et' reward'). Vous déclarez seulement une variable ** une fois **. Ensuite, vous l'utilisez simplement. Voter pour fermer comme typo/non-repro. –

+0

https://www.guru99.com/java-tutorial.html se référer à cela, vous pourriez vouloir commencer au début. – Wep0n

+0

En outre, vous devez savoir que tous ces 'int récompense ...' à l'intérieur de votre commutateur, déclarer une nouvelle variable visible uniquement à l'intérieur de 'case'. – Shirkam

Répondre

2

compilateur dites OK, vous essayez de créer 'une autre variable avec le même nom', ce qui est faux. Supprimer les déclarations dupliquées

if (guess == randomNom) 
{ 
    System.out.println(" You Win! "); 
    player.setEarning(player.getEarn() + guess * 10); 

    int reward = guess; 
    String prize = ""; 

    switch(reward) 
    { 
    case 1: reward = 10; 
     prize = " Prize #1"; 
     break; 

    case 2: reward = 20 ; 
     prize = "Prize #2"; 
     break; 

    case 3: reward = 30; 
     prize = "Prize #3"; 
     break; 

...  
    } 
+0

Salut Jacek, Comme l'OP déjà dit qu'il est nouveau à Java, résoudre son problème avec le code ne l'aidera pas. Au lieu de cela expliquer la logique derrière ce qu'il fait mal et quelle est la bonne façon de le faire. :-) – Aman

2

Le problème est dans ces lignes

String prize = ""; 
String prize = " Prize #1"; 
String prize = "Prize #2"; 

Lorsque vous attribuez une variable de manière précitée, à savoir data type suivie par le compilateur de nom de la variable suppose que vous souhaitez définir une nouvelle variable avec une valeur .

Au lieu de cela, vous devez définir une fois

String prize = ""; // Data type followed by variable name is to define new variable 

et mise à jour par la suite

prize = " Prize #1"; //just the variable name with assignment operator to assign new value to existing variable. 
prize = " Prize #2"; 
+0

Explication correcte. :-) – Aman