Problème java programmation sur tableau

lapierre49 Messages postés 3 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,
Je voudrais quand on tape le nom d'un pays qu'il y ai un message avec le nom du pays et sa capitale.Mais ca ne s'affiche pas.Voici mon programme

import java.util.Scanner;
public class Pays {

public static void main(String[] args) {
  Scanner clavier = new Scanner(System.in);
  System.out.println("Entrez un pays...");
  String reponse = clavier.nextLine();
  String[][] pays = {{"France", "Paris"}, {"Allemagne", "Berlin"}, {"Italie", "Rome"}, {"Espagne", "Madrid"}, {"Etats-Unis", "Whashington"}, {"Portugal", "Lisbonne"}};
  //Noms des pays avec leurs capitales
  System.out.println("Recherche dans la banque de données...");
  try {
   Thread.sleep(2000);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  for (int i = 0; reponse.equals(pays[i][0]) || i > 3; i++){ //Tentative de recherche d'un pays
   System.out.println("Le pays est " + pays[i][0] +" sa capitale est " + pays[i][1]);
  }
 }
}

Et quand je le lance s'a affiche

Entrez un pays...
Italie
Recherche dans la banque de données...

Merci de me donner la solution.Mon problème c'est que n'arrive pas à faire une recherche dans ce tableau pays

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Que voulais tu dire par
    reponse.equals(pays[i][0]) || i > 3
    ?
    Cette condition est toujours fausse (sauf pour "France") donc la boucle s'arrête. Tu pourrais juste la remplacer par
    i < pays.length
    et ajouter un if dans la boucle pour filtrer l'égalité.

    for (int i = 0; i < pays.length; i++)
        if (pays[i][0].equalsIgnoreCase(reponse))
            System.out.println("Le pays est " + pays[i][0]
                    + " sa capitale est " + pays[i][1]);

    Remarque, on peut aussi faire ça avec une boucle for each.

    for (String[] capitale : pays)
        if (capitale[0].equalsIgnoreCase(reponse))
            System.out.println("Le pays est " + capitale[0]
                    + " sa capitale est " + capitale[1]);
    0
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Un
      break
      à la fin du code du
      if
      serait le bienvenu pour éviter les itérations inutiles.
      0