IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

ava lang ArrayIndexOutOfBoundsException: 9


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut ava lang ArrayIndexOutOfBoundsException: 9
    Bonjour, Voici une erreur que j'obtiens lors de la réalisation d'un backtraking sur sudoku.

    Je code en scala mais cela ne devrait pas poser de soucie.

    Je sais que l'erreur et obtenue lorsque l'on va plus loins dans le tableau crée mais je ne trouve pas la solution.

    java.lang.ArrayIndexOutOfBoundsException: 9
    at Sudoku$$anonfun$missingOnBlock$1$$anonfun$apply$mcVI$sp$2.apply$mcVI$sp(Sudoku.scala:62)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:285)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$$anonfun$missingOnBlock$1.apply$mcVI$sp(Sudoku.scala:61)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.missingOnBlock(Sudoku.scala:60)
    at Sudoku$$anonfun$isValid$1.apply$mcVI$sp(Sudoku.scala:83)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.isValid(Sudoku.scala:81)
    at Sudoku$$anonfun$isValid$1.apply$mcVI$sp(Sudoku.scala:87)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.isValid(Sudoku.scala:81)
    at Sudoku$$anonfun$isValid$1.apply$mcVI$sp(Sudoku.scala:87)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.isValid(Sudoku.scala:81)
    at Sudoku$.isValid(Sudoku.scala:79)
    at Sudoku$$anonfun$isValid$1.apply$mcVI$sp(Sudoku.scala:87)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.isValid(Sudoku.scala:81)
    at Sudoku$$anonfun$isValid$1.apply$mcVI$sp(Sudoku.scala:87)
    at scala.collection.immutable.Range$ByOne$class.foreach$mVc$sp(Range.scala:282)
    at scala.collection.immutable.Range$$anon$1.foreach$mVc$sp(Range.scala:274)
    at Sudoku$.isValid(Sudoku.scala:81)
    at Sudoku$.isValid(Sudoku.scala:79)
    at Sudoku$.main(Sudoku.scala:103)
    at Sudoku.main(Sudoku.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:81)
    at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:24)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:86)
    at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:81)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:86)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:83)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
    J'ai fait des println est je ne vais pas plus loin que 7 donc je ne devrait pas dépasser mon tableau.

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Je ne connais pas trop ce langage...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def missingOnBlock (numberToCheck : Int, board : Array[Array[Int]], line : Int, column: Int) =
    {
      println(line,column)
        var missing = true
        // _i = 3*(i/3), _j = 3*(j/3)
        var _line : Int = line-(line%3) 
        var _column : Int = column-(column%3);  
     
      for (line <- _line to _line+3){ 
         for (column <- _column to _column+3)
                if (board(line)(column) == numberToCheck)
                    missing = false
        }
        missing
    }
    Ta méthode missingOnBlock(...) semble incorrecte.
    Tes calculs de _line et _column semblent bizares.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Comme j'ai dit, c'est du Scala, mais cela est très similaire au Java.


    Oui visiblement cela viens de là, mais je vois pas ou exactement.


    Edit : Résolut, la boucle fait 1 de trop est donc dépasse :s

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Affiche les résultats de tes calculs de _line et _column. Le problème doit venir de là.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    pour line de 0 à 8

    var _line : Int = line-(line%3)
    0 - 0%3 ==> 0
    1 - 1%3 ==> 0
    2 - 2%3 ==> 0
    3 - 3%3 ==> 3
    4 - 4%3 ==> 3
    5 - 5%3 ==> 3
    6 - 6%3 ==> 6
    7 - 7%3 ==> 6
    8 - 8%3 ==> 6

    Du coup si tu ajoutes +3 dans ta boucle
    for (line <- _line to _line+3){
    for (column <- _column to _column+3)
    if (board(line)(column) == numberToCheck)
    missing = false
    }
    missing
    }

    Tu vas atteindre 9.
    Il faut mettre +2 et pas +3 je pense.
    ainsi tu auras
    pour 0 les cases 0 1 et 2
    pour 3 les cases 3 4 et 5
    pour 6 les cases 6 7 et 8

    IDEM pour les colonnes

  6. #6
    zo1odMSQr5Fy
    Invité(e)
    Par défaut
    Ne connaissant pas scala je me suis dit on va dérouler le programme.

    En sachant l'erreur on peut en déduire que tu dépasse la taille du tableau

    c'est un tableau de 9x9

    tu verifie les manquants ( tes fonctions missings ) de 1 a 8 ( via ton for (number <- 1 to 8)

    Je me suis dit on essaye le minimum et le maximum
    si tu passe 1 tu as _line =0 et _column =0 c'est correct
    tu ajoute ensuite 3 dans une autre boucle
    ca fait 3 pour les deux ça passes.

    Mais par contre pour le maximum (8) en faisant les calculs tu arrives a 9
    donc tu dépasses !

    Donc soit tu le sépares et tu fait un for 1 a 7 soit tu ajoutes 2 au lieu de 3 ^^

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    Merci mathieu, j'avais trouvé l'erreur avant de revenir sur le forum.

    Mais je te remercie.

    Je n'ai plus d'erreur mais le problème c'est que je ne résolve pas mon tableau sudoku. Une erreur de code doit toujours être la.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Est-ce que ta grille est "résolvable" ?

  9. #9
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ce n'est pas du java. Ce n'est donc pas la bonne section.
    Mais ce que je peux dire entant que développeur, c'est :
    Si tu parcours une liste ou un tableau.
    Au grand jamais, tu ne préjugera de sa taille pour le parcourir.
    Laisse le .length .length() et le .size() décider pour toi.
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 161
    Points : 75
    Points
    75
    Par défaut
    @kolodz : Scala est du Java.

    Merci de votre aide, un problème de récursivité.


    J'ai résolut.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/06/2009, 23h54
  2. Réponses: 4
    Dernier message: 17/11/2007, 15h29
  3. Réponses: 1
    Dernier message: 12/07/2007, 15h35
  4. [XSLT] java.lang.ArrayIndexOutOfBoundsException sur Transformation XSLT
    Par SONY30 dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 11/12/2006, 16h59
  5. Réponses: 4
    Dernier message: 30/07/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo