"Simon dit" en java [fermé]


"Simon Says" est un jeu de mémoire où "Simon" sort une séquence de 10 caractères (R, G, B, Y) et l'utilisateur doit répéter la séquence.

Créez une boucle for qui compare les deux chaînes à partir de l'index 0.

Pour chaque correspondance, ajoutez un point à userScore. En cas de non-concordance, quittez la boucle à l'aide d'une instruction break.

Ex: Les modèles suivants donnent un userScore de 4: simonPattern: R, R, G, B, R, Y, Y, B, G, Y userPattern: R, R, G, B, B, R, Y, B, G, Y

import java.util.Scanner;

public class SimonSays {
public static void main (String [] args) {
  String simonPattern = "";
  String userPattern = "";
  int userScore = 0;
  int i = 0;

  userScore = 0;
  simonPattern = "RRGBRYYBGY";
  userPattern  = "RRGBBRYBGY";

  /* Your solution goes here  */
  char s;
  char u;


  for (i=0;i<=10;i++) {
     s = simonPattern.charAt(i);
     u = userPattern.charAt(i);

     if (s == u) {
        userScore = userScore + 1;
        continue;
     }

  }

  System.out.println("userScore: " + userScore);

  return;
 }
}

Et le système dit:

Runtime error (commonly due to an invalid array/vector access, divide by 0, etc.).

Pourquoi mon code n'a pas fonctionné?

Author: Gui, 2015-03-01

3 answers

Au lieu de programmer en dur la longueur de votre chaîne (juste parce qu'avant vous devriez avoir le doigt compté et vous pouvez vous tromper), vous pouvez utiliser

for (int i=0; i < simonPattern.length(); i++)

Codage Heureux

Edit: mais il pourrait également générer une exception, car userPattern pourrait être plus petit que simonPattern. Vous pouvez le vérifier par

if (simonPattern.length() == userPattern.length()) {
     userScore = userScore + 1;
     continue; // this is not really needed but it may if having more else-if
} else{
     break; // This will break the loop as soon as it finds a mismatch

}

 3
Author: gomezportillo, 2016-06-07 06:09:58

L'erreur est ici:

for (i=0;i<=10;i++) {

Changement dans

for (i=0;i<10;i++) {

Votre chaîne a length = 10.

 2
Author: Gabriele Mariotti, 2015-03-01 23:10:54

for (i=0;i<=10;i++) { exécutera 11 fois (0 à 10) et vous n'avez que 10 éléments dans vos cordes. Changer la ligne en for (i=0;i<10;i++) { exécutera le nombre approprié de fois et ne devrait pas lever d'exceptions.

 1
Author: Marko Živanović, 2015-03-01 19:13:28