JAVA - exception d'un caractère dans un scan

Fermé
bebel75 Messages postés 2 Date d'inscription samedi 12 décembre 2009 Statut Membre Dernière intervention 12 décembre 2009 - 12 déc. 2009 à 16:40
 danimo - 14 déc. 2009 à 20:58
Bonjour,

Je suis débutant en Java ...
Voila j'ai un tableau que je veux remplir à l'initialisation d'étoile (*) ... des données seront ultérieurement rentrées dedans par les utilisateurs ... et je veux que ma fonction regardes si toutes les données du tableau sont similaires à l'exception du * ... y a pas qq chose du genre -{*} comme en math ?
comment faire ? D'avance, merci

static boolean test(char [] [] tableau) {

for (int i=0; i<3; i++){
    if (tableau[i][0] == tableau[i][1] && tableau[i][0] == tableau[i][2]) return true;}
 
return false;
}

A voir également:

2 réponses

Utilisateur anonyme
12 déc. 2009 à 21:29
Salut,

TABLEAU À 2 DIMENSIONS (RAPPEL)

utilisation d'un tableau à dimensions char [][] tableau ...:

- le premier [] doit contenir un numéro d'élément, donc une valeur de 0 à n (n < longueur du tableau).
-le deuxième [] doit contenir un numéro de dimension, donc pour un tableau à 2 dimensions, 0 ou 1.

exemple.

         char [][] tableau = {
         {'a',    // elt 1 (1ier elt) de la dimension 1 >> [0][0]
            'a'}, // elt 1 (1ier elt) de la dimension 2 >> [0][1]
               
         {'b',    // elt 2 (2eme elt) de la dimension 1 >> [1][0]
            'b'}, // elt 2 (2eme elt) de la dimension 2 >> [1][1]
               
         {'c',    // elt 3 (3eme elt) de la dimension 1 >> [2][0]
            'a'}, // elt 3 (1ier elt) de la dimension 2 >> [2][1]
               
         {'d',    // elt 4 (4eme elt) de la dimension 1 >> [3][0]
            'd'}, // elt 4 (4eme elt) de la dimension 2 >> [3][1]
               
         {'e',    // elt 5 (5eme elt) de la dimension 1 >> [4][0]
            'b'}, // elt 5 (5eme elt) de la dimension 2 >> [4][1]
         };
               
               // Affichage:
         System.out.println("");
         for(int i = 0; i < tableau.length; i++)
         {
            System.out.print("element " + (i+1) + " de la dim. 1: " + tableau[i][0]);
            System.out.println("");
            System.out.println("element " + (i+1) + " de la dim. 2: " + tableau[i][1] + "\n");
         }
         
         for(int i = 0; i < tableau.length; i++)
         {
  // le test ci-dessous
  // if (tableau[i][0] == tableau[i][1]) && tableau[i][0] == tableau[i][2])
  // est impossible >> tableau[i][2] >> dimension 3 pour un tableau à 2 dimensions
            
            if (tableau[i][0] == tableau[i][1]) // && tableau[i][0] == tableau[i][2])
            {
               System.out.println("i: " + i + " true");
            }
            else
               System.out.println("i: " + i + " false");
         }


Maintenant pour que l'on puisse t'aider à traiter ton cas:

-il faudrait qu'on sache ce que tu entends par "si toutes les données du tableau sont similaires"
-similaires à quoi ?
-pourquoi initialiser à *
-quel type de données doivent entrer les utilisateurs sachant qu'ils ne peuvent qu'entrer des données qui doivent correspondre au type du tableau (char, String, int etc)
-tente d'être plus précis sur ce que tu dois faire
-un tableau de char n'est peut-être pas le bon choix mais peut-être que si
-unidimensionnel ou multidimensionnel
-et encore une fois: tout dépend de ce que tu dois faire, de ce que tu à le droit d'utiliser (si c'est un exo)

Cordialement,

Dan
0
Utilisateur anonyme
12 déc. 2009 à 22:13
Re,

Supposons que tu veuilles savoir si par exemple un String contient le caractère *
(Il y a, comme très souvent, plusieurs méthodes pour le savoir),
en voici une:

int ind = 0;
         String unString = "";
      
      
         unString = "* le gaulois";
      //ou
         //unString = "Asterix le gaulois";
        
         ind = unString.indexOf("*");
         if (ind == -1)
            System.out.println("\nunString \"" + unString + "\" ne contient pas d'*");
         else
            System.out.println("\nunString \"" + unString + "\" contient au moins un *");


Dan
0
Bonjour,

Merci en fait j'ai un tableau Morpion 3*3 initialisé avec des * dans les 9 cases.

J'ai crée une fonction qui va scanner le tableau pour voir si j'ai une ligne de O ou de X ... en revanche je ne veux pas que la fonction me découvre une ligne de * ....

c'est pour cela que je cherche qq chose de léger qui decouvre si 3 cases sont identiques EXCEPTE du caractere *


J'espere avoir été clair. D'avance, merci.
0
danimo > bebel75
14 déc. 2009 à 20:58
Salut,

Bon voici un petit exemple.

La méthode suivante permet de savoir s'il n'y a pas d'* dans l'un des 8 cas possibles de jeu:
-3 lignes (ligne1, ligne2, ligne3)
-3 colonnes (colon1, colon2, colon3)
-1 diagonale / (diago1)
-1 diagonale \ (diago2)

La méthode (une parmi d'autres):

public static void suiteCouO(String suite, String nomSuite) // static car dans l'exemple qui suit, le traitement est fait dans la méthode main(...)

      {
         int nbreDeFois = 0; 
         pattern = Pattern.compile("\\w"); //ce motif (\w) traite les lettres minus. et majus.
                                           // et les chiffes 0 a 9, donc pas les *
         matcher = pattern.matcher(suite);
         while(matcher.find())
         {
            nbreDeFois++;
         }
         if(nbreDeFois == 3)  // car il faut 3 non * pour que le cas soit retenu
            System.out.println("\nLa suite: " + suite + " (" + nomSuite + ") ne contient pas d'*");
      }


On appelle cette méthode comme ceci:

suiteCouO(un_des_8cas, "nom_du_cas");
// exemple ...(ligne1, "ligne1"); ou ...(diago1, "diago1");


L'exemple (c'est un programme à compiler et executer) pas très jojo mais je devais simuler quelques phases de jeu et détailler au maximum:

import java.util.regex.*;

    public class Xyz
   {
   // utilisation d'un tableau de 2 dimensions	
      
   // exemples:
   //String[][] tablo1 = new String[2][3]; // penser à une table de 2 lignes et 3 colonnes
   //String[][] tablo2 = new String[3][3]; // penser à une table de 3 lignes et 3 colonnes
         
      private static String [][] tableau = new String[3][3];
   //le 1ier [3] indique le nombre de lignes, c'est en fait la longueur de la 1ere dimension.
   //le 2ième [3] indique le nombre de colonnes, c'est en fait la longueur de la 2eme dimension.
   
      private static String ligne1; // cas 1
      private static String ligne2; // cas 2
      private static String ligne3; // cas 3
      private static String colon1; // cas 4
      private static String colon2; // cas 5
      private static String colon3; // cas 6
      private static String diago1; // cas 7
      private static String diago2; // cas 8
        
      private static Pattern pattern;
      private static Matcher matcher;
   
       public static void initialiserTableau(String valInit)
      {
         for(int i = 0; i < tableau.length; i++)
         {
            tableau[i][0] = valInit; // ligne 1 colonne 0
            tableau[i][1] = valInit; // ligne i colonne 1
            tableau[i][2] = valInit; // ligne i colonne 2
         }
      }
   
       public static void afficherTableau()
      {
         System.out.println("\n");
         for(int i = 0; i < tableau.length; i++)
         {
            System.out.print("Ligne" + (i+1) + " " + tableau[i][0]); // ligne i colonne 0
            System.out.print(tableau[i][1]); // ligne i colonne 1
            System.out.println(tableau[i][2]); // ligne i colonne 2
         }
      }
   
       public static void developperTableau()
      {
      // les 8 cas possibles:
      // -3 lignes de 3 cases
      // -3 colonnes de 3 cases
      // -1 diagonale (/) de 3 cases
      // -1 diagonale (\) de 3 cases
      
         ligne1 = "";
         ligne2 = "";
         ligne3 = "";
         for(int i = 0; i < tableau.length; i++)
         {
            ligne1+= tableau[0][i];
            ligne2+= tableau[1][i];
            ligne3+= tableau[2][i];
         }
         //System.out.println("\nLigne 1: " + ligne1);
         suiteCouO(ligne1, "ligne1");
         
         //System.out.println("Ligne 2: " + ligne2);
         suiteCouO(ligne2, "ligne2");
         //System.out.println("Ligne 3: " + ligne3);
         suiteCouO(ligne3, "ligne3");
         
         colon1 = "";
         colon2 = "";
         colon3 = "";
         for(int i = 0; i < tableau.length; i++)
         {
            colon1+= tableau[i][0];
            colon2+= tableau[i][1];
            colon3+= tableau[i][2];
         }
         //System.out.println("\nColonne 1: " + colon1);
         suiteCouO(colon1, "colon1");
         //System.out.println("Colonne 2: " + colon2);
         suiteCouO(colon2, "colon2");
         //System.out.println("Colonne 3: " + colon3);
         suiteCouO(colon3, "colon3");
         
         //diago1 (/)
         //diago2 (\)
         diago1 = tableau[2][0] + tableau[1][1] + tableau[0][2];
         diago2 = tableau[2][2] + tableau[1][1] + tableau[0][0];
         //System.out.println("\nDiagonale 1: " + diago1);
         suiteCouO(diago1, "diago1");
         //System.out.println("Diagonale 2: " + diago2);
         suiteCouO(diago2, "diago2");
         
      }
   
       public static void suiteCouO(String suite, String nomSuite)
      {
         int nbreDeFois = 0; 
         pattern = Pattern.compile("\\w"); //ce motif (\w) traite les lettres minus. et majus.
                                           // et les chiffes 0 a 9, donc pas les *
         matcher = pattern.matcher(suite);
         while(matcher.find())
         {
            nbreDeFois++;
         }
         if(nbreDeFois == 3)
            System.out.println("\nLa suite: " + suite + " (" + nomSuite + ") ne contient pas d'*");
      }
   
       public static void main(String args[])
      {
      //init. du tableau à "*";
         initialiserTableau("*");
      
      //affichage du tableau apres init.
         afficherTableau();
         
      //simulation de l'entrée d'un "x" en ligne i colonne 0
         tableau[1][0] = "x"; // ligne 1 colonne 0
      	//affichage du tableau apres modif.
         afficherTableau();
         developperTableau();
      	
      //simulation de l'entrée d'un "o" en ligne i colonne 1
         tableau[1][1] = "o"; // ligne 1 colonne 1
      	//affichage du tableau apres modif.
         afficherTableau();
         developperTableau();
      	   
      //simulation de l'entrée d'un "x" en ligne i colonne 2
         tableau[1][2] = "x"; // ligne 1 colonne 2
         //affichage du tableau apres modif.
         afficherTableau();
         developperTableau();
         
         tableau[0][0] = "o"; // ligne 0 colonne 0
         afficherTableau();
         developperTableau();
         
         tableau[2][0] = "x"; // ligne 2 colonne 0
         afficherTableau();
         developperTableau();
         
         tableau[2][2] = "o"; // ligne 0 colonne 0
         afficherTableau();
         developperTableau();
         
      	
      }
   }

Cordialement,

Dan
0

Discussions similaires