TD3: tableaux avancées, première classe et chaînes



Documents pareils
Utilisation d objets : String et ArrayList

ACTIVITÉ DE PROGRAMMATION

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java Licence Professionnelle CISII,

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Langage Java. Classe de première SI

as Architecture des Systèmes d Information

Programmer en JAVA. par Tama

TP, première séquence d exercices.

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Plan du cours. Historique du langage Nouveautés de Java 7

Premiers Pas en Programmation Objet : les Classes et les Objets

Flux de données Lecture/Ecriture Fichiers

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Solutions du chapitre 4

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

PROGRAMMATION PAR OBJETS

Cours 1: Java et les objets

Une introduction à Java

Corrigé des exercices sur les références

Projet de programmation (IK3) : TP n 1 Correction

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation avec des objets : Cours 7. Menu du jour

INF 321 : mémento de la syntaxe de Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmation en Java IUT GEII (MC-II1) 1

Tp 1 correction. Structures de données (IF2)

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programme Compte bancaire (code)

Programmation par les Objets en Java

Généralités sur le Langage Java et éléments syntaxiques.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

TP1 : Initiation à Java et Eclipse

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours d initiation à la programmation en C++ Johann Cuenin

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à MATLAB R

Corrigés des premiers exercices sur les classes

Les structures de données. Rajae El Ouazzani

TP : Gestion d une image au format PGM

Cours 14 Les fichiers

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

1. Langage de programmation Java

I. Introduction aux fonctions : les fonctions standards

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Introduction au langage Java

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Gestion distribuée (par sockets) de banque en Java

Exercices sur les interfaces

Auto-évaluation Programmation en Java

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Langage à objets : JAVA (1)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Apprendre Java en 154 minutes

STAGE IREM 0- Premiers pas en Python

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Notions fondamentales du langage C# Version 1.0

Java DataBaseConnectivity

OCL - Object Constraint Language

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Structurer ses données : les tableaux. Introduction à la programmation

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Package Java.util Classe générique

Java c est quoi? Java pourquoi?

Objets et Programmation. origine des langages orientés-objet

Java Licence Professionnelle CISII,

Chapitre VI- La validation de la composition.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Un ordonnanceur stupide

Algorithmique et Programmation, IMA

Programmation Objet I

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Recherche dans un tableau

Threads. Threads. USTL routier 1

TD2 Programmation concurrentielle

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les chaînes de caractères

Corrigé des TD 1 à 5

Cours Informatique Master STEP

TD/TP PAC - Programmation n 3

Programmation Objet Java Correction

COMPARAISONDESLANGAGESC, C++, JAVA ET

Démonstration d utilisation De NesmaCom

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Transcription:

TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première notation, place une paire de crochet par dimension du tableaujusteaprèsuntype: int[] untableau; double[][] untableaubidimensionnel; Lasecondedéclarationplacela(oules)paire(s)decrochetsaprèslenomdela variable liée. int untableau[]; double untableaubidimensionnel[][]; Construction des tableaux La construction se fait en utilisant l opérateur new suividutypededonnéecontenuesdansletableaupuisdelataillevouluepour chaque dimensions entre crochets. untableau = new int[10]; untableaubidimensionnel = new double[5][23]; Les tableaux peuvent aussi être construit en plusieurs étapes. Les dimensions doivent être spécifiées de la gauche vers la droite. Chaque sous tableau est alors un tableau de dimension inférieure. L exemple ci dessous présente la construction d un tableau bidimensionnel triangulaire: src/tableaubidim.java Chaque ligne est expliquée ci dessous: Le tableau donnees est déclaré bidimensionnel. Le tableau est partiellement construit, seule la première dimension est fixée à 10. tableau[i] est un tableau mono-dimensionnel(dimension 2 1) dont la taille n est pour l instant pas fixée. La boucle crée un tableau mono-dimensionnel pour chaque tableau[i] dont la taille vaut [i+1] Deux affectations sont ensuite effectuées. Le tableau obtenu est donc triangulaire composé de 1 élément sur la première ligne, 2surladeuxième,... Tableaux contenant des objets Les tableaux peuvent aussi contenir des objets. Ladéclarationdutableauxestlamême,untype(danscecasuneclasse)suivitdu 1

nomdutableau: String untableau[]; String untableaubidimensionnel[][]; Laconstructiondutableaufaitappelaumotclé newsuivitdunomdelaclasse et de(ou des) paire(s) de crochets contenant les dimensions. untableau = new String[10]; untableaubidimensionnel = new String[5][23]; A la suite de la construction du tableau, les éléments contenus doivent être crées un à un, souvent à l aide d une boucle. L exemple suivant présente la construction d un tableau de chaîne de caractères: String tab[]; tab = new String[10]; for (int i = 0; i < 10; i++) { tab[i] = new String(); Remarque Souvent, la déclaration et la construction du tableau sont faites en uneseuleligne: int untableau[] = new int[10]; double untableaubidimensionnel[][] = new double[5][23] 1.2 Initialisation aléatoire d une matrice Écrivez unprogramme quiinitialise unematricedetaille10 par5avecdes valeurs aléatoires comprises entre 0 et 10. Correction: import java.util.random; public class InitialisationAleatoire { public static void main(string[] args) { int[][] matrice = new int[5][10]; Random gen = new Random(); // Remplissage de la matrice for (int i = 0; i < matrice.length; i++) { for (int j = 0; j < matrice[0].length; j++) { matrice[i][j] = gen.nextint(10); // Affichage de la matrice for (int i = 0; i < matrice.length; i++) { 2

for (int j = 0; j < matrice[0].length; j++) { System.out.print(matrice[i][j]+" " ); System.out.println(); 1.3 Somme de matrices A partir du programme précédent, écrivez un programme qui calcule la somme de deux matrices remplies aléatoirement. Correction: import java.util.random; public class SommeMatrices { public static void main(string[] args) { int[][] matrice1 = new int[5][10]; int[][] matrice2 = new int[5][10]; int[][] somme = new int[5][10]; Random gen = new Random(); // Remplissage de la matrice for (int i = 0; i < matrice1.length; i++) { for (int j = 0; j < matrice1[0].length; j++) { matrice1[i][j] = gen.nextint(10); matrice2[i][j] = gen.nextint(10); // Calcul de la somme for (int i = 0; i < matrice1.length; i++) { for (int j = 0; j < matrice1[0].length; j++) { somme[i][j] = matrice1[i][j] + matrice2[i][j] ; // Affichage du resultat for (int i = 0; i < somme.length; i++) { for (int j = 0; j < somme[0].length; j++) { System.out.print(somme[i][j]+" " ); System.out.println(); 3

1.4 Produit de matrices Écrivez un programme qui initialise aléatoirement deux matrices, l une de 5 3 et l autre de 3 5 éléments. A partir du programme précédent, écrivez un programme qui calcule le produit des deux matrices. Correction: import java.util.random; public class ProduitMatrices { public static void main(string[] args) { int[][] matrice1 = new int[5][3]; int[][] matrice2 = new int[3][5]; int[][] produit = new int[5][5]; Random gen = new Random(); // Remplissage de la matrice for (int i = 0; i < matrice1.length; i++) { for (int j = 0; j < matrice1[0].length; j++) { matrice1[i][j] = gen.nextint(10); matrice2[j][i] = gen.nextint(10); // Calcul du produit for (int ligne = 0; ligne < matrice1.length ; ligne++) { for (int colonne = 0; colonne < matrice2[0].length; colonne++) { produit[ligne][colonne] = 0 ; for (int m = 0; m < matrice1[0].length; m++) { produit[ligne][colonne] = produit[ligne][colonne] + ( matrice1[ligne][m] matrice2[m][colonne]); // Affichage du resultat for (int i = 0; i < produit.length; i++) { for (int j = 0; j < produit[0].length; j++) { System.out.print(produit[i][j]+" " ); System.out.println(); 4

1.5 Classematrice Vous allez construire une classe Matrice dont le schéma UML est présenté dans la figure ci dessous. Matrice - données:entier[][] +Matrice() + Matrice(Matrice unematrice) + Matrice(entier[][] untableau) + Matrice(entier nblignes,entier nbcolonnes) +getnombrelignes():entier + getnombrecolonnes(): entier + getdonnées(entier ligne,entier colonne): entier + setdonnées(entier ligne, entier colonne, entier unevaleur): + RemplirMatriceAléatoirement(): +AfficherMatrice(): + CalculSomme(Matrice unematrice): Matrice + CalculProduit(Matrice unematrice): Matrice + CalculDeterminant(): entier FIG.1 SchémaUMLdelaclasse Matrice 1.5.1 Attributs La classe matrice a un seul attribut, un tableau bidimensionnel qui contient les valeurs de la matrice. 1.5.2 Méthodes Les constructeurs La classe comporte quatre constructeurs: le premier constructeur ne reçoit aucun paramètre, il est vide. le second constructeur reçoit une matrice en paramètre et en construit une copie. le troisième constructeur reçoit un tableau d entiers et construit une matrice à partir des valeurs contenues dans le tableau. le quatrième constructeur construit une matrice à partir du nombre de lignes et du nombre de colonnes passés en paramètre. 5

La méthode d affichage La méthode AfficherMatrice permet d afficher le contenu de la matrice en utilisant System.out.print et System.out.println et de tabulation(\t). La méthode de remplissage La méthode RemplirMatriceAleatoirement permet de remplir aléatoirement une matrice avec des valeurs comprises entre 0 et 9 (inclus). Les assesseurs Les attributs sont privés. Les données doivent donc être lues ou modifiéesenpassantpardesméthodes 1.Deuxméthodespermettentdedéterminer lesdimensionsdelamatrice: la méthode getnombrelignes renvoie le nombre de lignes contenues dans la matrice de même, la méthode getnombrecolonnes renvoie le nombre de colonnes contenues dans la matrice. Deux méthodes permettent de lire/écrire les données contenues dans la matrice: getvaleur renvoie la valeur contenue aux coordonnées passées en arguments d appel La méthode setvaleur permet de placer une valeur dans la matrice(la valeur et les coordonnées sont passées par les arguments d appel). Ces deux méthodes vérifient que les coordonnées sont valides avant d effectuer une opération de lecture ou d écriture. Méthodes arithmétiques Deux méthodes permettent d opérer des calculs arithmétiques sur des matrices. Ces deux méthodes reçoivent une matrice en paramètre et renvoie une nouvelle matrice construite à partir de la matrice considérée(référencée par this) et celle passée en paramètres. CalculSomme renvoie la somme CalculProduit renvoie le produit Silescalculsnesontpaspossibles(taillesdesmatricesnoncompatibles,...) ces méthodes renvoient null Calcul du déterminant La méthode CalculDeterminant permet de calculer le déterminant d une matrice. Une méthode relativement facile à programmer est le calcul récursif. silamatriceaunetaillede 1 1,ledéterminantestlavaleurcontenuedans la matrice, sinon, on calcul le déterminant de manière récursive. Exemplepourunematrice 3 3 a 0,0 a 0,1 a 0,2 A = a 1,0 a 1,1 a 1,2 a 2,0 a 2,1 a 2,2 Le déterminant se calcul de la manière suivante: 1 Lesméthodespermettantd accéderàdesdonnéesprivéessontdesassesseurs 6

( ) ( ) ( ) a1,1 a det A = a 0,0.det 1,2 a1,0 a a a 2,1 a 0,1.det 1,2 a1,1 a + a 2,2 a 2,0 a 0,2.det 1,2 2,2 a 2,1 a 2,2... puis ( ) a1,1 a det 1,2 = a a 2,1 a 1,1.det ( ) a 2,2 a1,2 det ( ) a 2,1 2,2 Correction: import java.util.random; public class Matrice { Les donnees contenues dans la matrice public int[][] donnees; Constructeur de base public Matrice() { Construction d une matrice a partir de ses dimensions @param nblignes le nombre de lignes @param nbcolonnes le nombre de colonnes public Matrice (int nblignes, int nbcolonnes){ if ( (nblignes!= 0) && (nbcolonnes!= 0) ){ this.donnees = new int[nblignes][nbcolonnes]; Construction d une matrice a partir d un tableau @param untableau les donnees sources public Matrice (int[][] untableau){ if ( (untableau.length!= 0) && (untableau[0].length!= 0) ){ 7

this.donnees = new int[untableau.length][untableau[0].length]; for (int i = 0; i < untableau.length; i++) { for (int j = 0; j < untableau[0].length; j++) { this.donnees[i][j] = untableau[i][j]; Construit une matrice en copiant une matrice existant @param unematrice la matrice source public Matrice (Matrice unematrice){ this.donnees = new int[unematrice.donnees.length][unematrice.donnees[0].length]; for (int i = 0; i < donnees.length; i++) { for (int j = 0; j < donnees[0].length; j++) { this.donnees[i][j] = unematrice.donnees[i][j]; Renvoie le nombre de lignes composant la matrice @return le nombre de lignes public int getnombrelignes(){ return this.donnees.length; Renvoie le nombre de colonnes composant la matrice @return le nombre de colonne public int getnombrecolonnes(){ return this.donnees[0].length; Permet de lire un element de la matrice @param ligne l abcisse de la cellule voulue 8

@param colonne l ordonnee de la cellule voulue @return la valeur de cet element public int getdonnees(int ligne, int colonne) { if( (ligne<this.donnees.length) && (colonne<this.donnees[0].length) ){ return this.donnees[ligne][colonne]; else{ return 0; Permet d ecrire un element dans la matrice @param ligne l abcisse de la cellule voulue @param colonne l ordonnee de la cellule voulue @param unevaleur la valeur a ecrire public void setdonnees(int ligne, int colonne, int unevaleur) { if( (ligne<this.donnees.length) && (colonne<this.donnees[0].length) ){ this.donnees[ligne][colonne] = unevaleur; Remplissage aleatoire de la matrice avec des valeurs comprises en 0 et 9 public void RemplirMatriceAleatoirement(){ Random generateuraleatoire = new Random(); for (int i = 0; i < this.donnees.length; i++) { for (int j = 0; j < this.donnees[0].length; j++) { this.donnees[i][j] = generateuraleatoire.nextint(10); Affiche le contenu de la matrice public void AfficherMatrice(){ for (int i = 0; i < this.donnees.length; i++) { for (int j = 0; j < this.donnees[0].length; j++) { System.out.print("\t"+this.donnees[i][j]); 9

System.out.println(); Calcul la somme de la matrice actuelle avec la matrice passee en parametre @param unematrice la matrice a ajouter @return la somme matricielle public Matrice CalculSomme(Matrice unematrice){ Matrice Somme = null; if( (this.donnees.length == unematrice.donnees.length) && (this.donnees[0].length == unematrice.donnees[0].length) ){ Somme = new Matrice (this.donnees.length,this.donnees[0].length); for (int ligne = 0; ligne < this.donnees.length ; ligne++) { for (int colonne = 0; colonne < this.donnees[0].length; colonne++) { Somme.donnees[ligne][colonne] = this.donnees[ligne][colonne] + unematrice.donnees[ligne][colonne]; return Somme; Calcul le produit de la matrice actuelle avec la matrice passee en parametre @param unematrice la matrice a multiplier @return le produit matriciel public Matrice CalculProduit(Matrice unematrice){ Matrice Produit = null; if( (this.donnees.length == unematrice.donnees[0].length) && (this.donnees[0].length == unematrice.donnees.length) ){ Produit = new Matrice(this.donnees.length,uneMatrice.donnees[0].length); 10

for (int ligne = 0; ligne < this.donnees.length ; ligne++) { for (int colonne = 0; colonne < unematrice.donnees[0].length; colonne++) { Produit.donnees[ligne][colonne] = 0 ; for (int m = 0; m < this.donnees[0].length; m++) { Produit.donnees[ligne][colonne] = Produit.donnees[ligne][colonne] + ( this.donnees[ligne][m] unematrice.donnees[m][colonne]); return Produit; Calcul le determinant de la matrice de maniere recursive @return le determinant de la matrice public int CalculerDeterminant(){ int det = 0; if ( this.donnees.length == this.donnees[0].length ){ if ( (this.donnees.length == 1 ) && (this.donnees[0].length == 1)){ det = this.donnees[0][0]; else{ / Parcours de la premiere ligne for (int colonne = 0; colonne < this.donnees[0].length; colonne++) { / Creation du sous tableau int[][] soustableau = new int[this.donnees.length - 1][this.donnees[0].length - 1]; / Remplissage du sous tableau for (int lignetableau = 1; lignetableau < this.donnees.length; lignetableau++) { for (int colonnetableau = 0; colonnetableau < this.donnees[0].length; colonnetableau++) { if (colonnetableau<colonne){ soustableau[lignetableau-1][colonnetableau] = 11

this.donnees[lignetableau][colonnetableau]; else{ if (colonnetableau>colonne){ soustableau[lignetableau-1][colonnetableau-1] = this.donnees[lignetableau][colonnetableau]; / Creation de la sous matrice a partir du sous tableau Matrice sousmatrice; sousmatrice = new Matrice(sousTableau); / Alternance de signe if(colonne % 2 ==0){ det = det + this.donnees[0][colonne] sousmatrice.calculerdeterminant(); else{ det = det - this.donnees[0][colonne] sousmatrice.calculerdeterminant(); return det; 1.6 Classe de test Écrivez une classe de test simple(juste une méthode main) pour tester votre classe Matrice. Correction: public class TestMatrice { @param args public static void main(string[] args) { /Matrice A,B,C; A = new Matrice(2,3); 12

B = new Matrice(3,2); A.RemplirMatriceAleatoirement(); B.RemplirMatriceAleatoirement(); System.out.println("A : "); A.AfficherMatrice(); System.out.println("B : "); B.AfficherMatrice(); System.out.println("Produit : "); C=A.CalculProduit(B); C.AfficherMatrice(); Matrice E; E = new Matrice(3,3); E.RemplirMatriceAleatoirement(); E.AfficherMatrice(); System.out.println("--- Determinant ---"); System.out.println(E.CalculerDeterminant()); 2 Leschaînes 2.1 Élémentsthéoriques Les chaînes de caractères sont représentées par différentes classes. La plus utilisée est la classe String. Son comportement est particulier et doit être bien compris pour éviter de mauvaises surprises lors du développement de programme. Laclasse Stringestdéclarée finaldanslelangage.ilestdoncimpossiblede créer une classe fille. Construction de chaîne La construction des chaînes est simplifiée dans la langage. Il n est pas nécessaire d appeler directement le constructeur(c est le seul cas danslelangagejava!). String machaine; machaine = "Bonjour"; Dans la première ligne la référence est déclarée puis dans la deuxième ligne elle est assigné à l objet String contenant la chaîne Bonjour. Elle peut être écrite(c est normalement l usage) en une ligne: String machaine = "Bonjour"; 13

Les chaînes peuvent être mise bout-à-bout(concaténées) en utilisant l opérateur +. Il s agit en fait d une notation simplifiée évitant l appel de la méthode concat de la classe String. String un = "Un"; String deux = " Deux"; String trois = un + deux; Méthodes utiles de la classe String Pour obtenir le nombre d élément(caractères) dans la chaîne, on utilise la méthode length(). La méthode char charat(int index) renvoie le caractère situé à la position donnée par index, s il existe. int indexof(string str) permet de recherche la position (renvoyée par l entier) de la chaîne str dans la chaîne utilisée. Deux chaînes peuvent être comparées en utilisant la méthode equals: a.equals( Toto ). Il est aussi possible de les comparer en ignorant la casse(majuscule/minuscule) avec la méthode equalsignorecase. Les méthodes startswith et endswith permettent de vérifier si une chaîne contient une sous chaînes en début/fin de la chaîne considérée. L extrait ci-dessus présente l utilisation de deux de ces méthodes: src/exemplechaine.java Dans la document Java on trouve une méthode surchargée déclarée ainsi : static String valueof(...) Cette méthode permet de convertir un type primitif en chaîne de caractères (entier,flottant,...). Comportement particulier des String Les chaînes sont immuables. Toutes les fonctions qui renvoient une chaîne renvoient un nouvel objet. String c= Bonjour ; String b; b=c; // b et c designent le meme objet c=c.tolowercase(); // b et c ne designent plus le meme objet 2.2 Palindrome Écrivez un programme qui demande un mot à l utilisateur(la classe Scanner propose une méthode nextline() qui renvoie une chaine String) et vérifie si ce motestunpalindrome.unpalindromeestunmotquipeutêtreludemanière identiquededroiteàgaucheetdegaucheàdroite(comme,parexemple,lemot kayak). Correction: 14

import java.util.scanner; public class Palindrome { public static void main(string[] args) { Scanner scan = new Scanner(System.in); String texte; boolean pal; int i=0; System.out.println("Tapez un mot : "); texte = scan.nextline(); do{ if (texte.charat(i)!= texte.charat(texte.length()-i-1)){ pal = false; else{ pal = true; i++; while( (i<texte.length()) && pal); if (pal){ System.out.println(texte + " est un palindrome"); else{ System.out.println(texte + " n est pas un palindrome"); 15