Problème java programmation sur tableau

Fermé
lapierre49 Messages postés 3 Date d'inscription mercredi 25 janvier 2017 Statut Membre Dernière intervention 26 janvier 2017 - Modifié par KX le 26/01/2017 à 20:32
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 26 janv. 2017 à 23:05
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
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
26 janv. 2017 à 20:44
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
26 janv. 2017 à 23:05
Un
break
à la fin du code du
if
serait le bienvenu pour éviter les itérations inutiles.
0