Coverage Summary for Class: TestNationLinkedList (io.github.lyes_sefiane)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
| TestNationLinkedList |
0%
(0/1)
|
0%
(0/9)
|
0%
(0/18)
|
0%
(0/88)
|
package io.github.lyes_sefiane;
import java.io.*;
import java.util.Collections;
import java.util.LinkedList;
/**
* Matricule UdeM : 20090833
* @author Lyes SEFIANE
* IFT 1170
* Java et ses applications
* lyes.sefiane@umontreal.ca
* lyes.sefiane@gmail.com
*/
public class TestNationLinkedList {
/**
* Lecture du ficher de données
* Et crée les pays
*/
public static LinkedList<Nation> lireCreePays (String fichierAlire) throws
IOException {
LinkedList<Nation> nation = new LinkedList<Nation>();
char codePays;
String nomPays, capitalePays;
int superficiePays, populationPays, nbLigne = 0;
boolean existeFichier = false;
//FileReader fr = null;
InputStream fr = TestNationLinkedList.class.getClassLoader().getResourceAsStream(fichierAlire);
if(!existeFichier){
System.out.printf("+ Debut de lecture du fichier %s ..\n\n", fichierAlire);
BufferedReader entree = new BufferedReader(new InputStreamReader(fr));
boolean finFichier = false;
while (!finFichier ){
String uneLigne = entree.readLine();
if(uneLigne == null)
finFichier = true;
else {
codePays = uneLigne.charAt(0);
nomPays = uneLigne.substring(1,36).trim();
capitalePays = uneLigne.substring(36, 62).trim();
superficiePays = Integer.parseInt(uneLigne.substring(62, 70).trim());
populationPays = Integer.parseInt(uneLigne.substring(75).trim());
nation.add(new Nation (codePays, nomPays, capitalePays,
superficiePays, populationPays));
nbLigne++;
}
}
System.out.printf("+ Nombre de pays lu est : %d \n\n", nbLigne);
entree.close();
System.out.printf("+ Fin de lecture du fichier %s \n\n", fichierAlire);
}
return nation;
}
/**
* Affichage des informations des Pays
* En redefinissant la methode toString()
*/
public static void affichePays(LinkedList<Nation> nation, int nbPaysAfficher) {
System.out.printf("+ Information des %d pays \n", nbPaysAfficher);
System.out.printf("%6s %28s %22s %14s %20s\n", "Code", "NomPays",
"Capitale", "Superficie", "Population");
for(int i = 0 ; i < nbPaysAfficher; i++)
System.out.printf("%s\n", nation.get(i));
System.out.printf("\n");
}
/**
* Modification du code continent d'un Pays
*/
public static void modifierCodeContient(LinkedList<Nation>nation, String nomPays,
char newCode){
boolean existe = false;
Nation aChercher = new Nation ('0',nomPays,"",0,0); // Création d'un objet pays
existe = nation.contains(aChercher);
if(!existe){
System.out.printf("Pays %s existe pas... \n\n", nomPays);
}
else{
int i = nation.indexOf(aChercher);
nation.get(i).setCodeContinent(newCode);
System.out.printf("+ Code Continent du pays '%s' modifié \n", nomPays);
System.out.printf("%s", nation.get(i));
}
System.out.printf("\n\n");
}
/**
* Modification de la capitale d'un pays
*/
public static void modifierCapitale(LinkedList<Nation> nation, String nomPays,
String newCapitale) {
boolean existe = false;
Nation aChercher = new Nation ('0',nomPays,"",0,0);// Création d'un objet pays
existe = nation.contains(aChercher);
if(!existe){
System.out.printf("Pays %s existe pas... \n\n", nomPays);
}
else{
int i = nation.indexOf(aChercher);
nation.get(i).setCapitalePays(newCapitale);
System.out.printf("+ Capitale du pays '%s' modifié \n", nomPays);
System.out.printf("%s", nation.get(i));
}
System.out.printf("\n\n");
}
/**
* Modification de la population d'un pays
* Avec un multiplicateur.
* Ex : 10 x Population de ce même pays
*/
public static void modifierPopulation(LinkedList<Nation> nation, String nomPays,
int multiplicateur) {
boolean existe = false;
Nation aChercher = new Nation('0',nomPays,"",0,0); // Création d'un objet pays
existe = nation.contains(aChercher);
if(!existe){
System.out.printf("Pays %s existe pas... \n\n", nomPays);
}
else{
int i = nation.indexOf(aChercher);
nation.get(i).setPopulationPays( nation.get(i).getPopulationPays() *
multiplicateur);
System.out.printf("+ Population du pays '%s' modifié \n", nomPays);
System.out.printf("%s", nation.get(i));
}
System.out.printf("\n\n");
}
/**
* Recherche dichotomique
*/
public static void binarySearch(LinkedList<Nation>nation, String nomPays) {
Nation aChercher = new Nation('0',nomPays,"",0,0);
int index = Collections.binarySearch(nation,aChercher);
if(index < 0 ){
System.out.printf("Pays %s existe pas... \n\n", nomPays);
}
else{
System.out.printf("+ Pays '%s' trouvé à l'indice %d\n", nomPays, index);
System.out.printf("%s", nation.get(index));
}
System.out.printf("\n\n");
}
/**
* Supression d'un pays
*/
private static void removePays(LinkedList<Nation> nation, String nomPays) {
Nation aChercher = new Nation('0',nomPays,"",0,0);
int index = Collections.binarySearch(nation, aChercher);
if(index < 0 ){
System.out.printf("Pays %s existe pas... \n\n", nomPays);
}
else{
nation.remove(index);
System.out.printf("+ Pays '%s' supprimé à l'indice %d\n", nomPays, index);
}
System.out.printf("\n\n");
}
public static void main(String[] args) throws IOException {
System.out.println("\t\t----------------------------");
System.out.println("\t\t- Exercice numéro B du TP3 -");
System.out.println("\t\t----------------------------\n");
LinkedList<Nation> nation = lireCreePays("Nations.txt");
affichePays(nation, 12);
// Code Continent : ‘5’ pour Europe
modifierCodeContient(nation, "Russie", '5');
modifierCapitale(nation, "Chine", "Pekin");
modifierPopulation(nation, "Allemagne", 10);
affichePays(nation, 15);
// Baser sur compareTo
// et l'implementation de l'interface Comparable
Collections.sort(nation);
affichePays(nation, 10);
binarySearch(nation, "Canada");
binarySearch(nation, "France");
binarySearch(nation, "Japon");
binarySearch(nation, "Mexique");
removePays(nation, "DES OURAGANS");
}
}
/*
----------------------------
- Exercice numéro B du TP3 -
----------------------------
+ Debut de lecture du fichier Nations.txt ..
+ Nombre de pays lu est : 197
+ Fin de lecture du fichier Nations.txt
+ Information des 12 pays
Code NomPays Capitale Superficie Population
2 ETATS-UNIS WASHINGTON 9629047 km² 291289535
3 CHINE SHANGHAI 9596960 km² 1273111290
2 RUSSIE MOSCOU 17075400 km² 143954573
4 AUSTRALIE CANBERRA 7686850 km² 19834248
3 JAPON TOKYO 377835 km² 12761000
5 ALLEMAGNE BERLIN 357027 km² 8253700
5 FRANCE MARSEILLE 543964 km² 61387038
5 ITALIE ROME 301230 km² 57715620
3 COREE DU SUD SEOUL 99274 km² 48324000
5 ROYAUME-UNI LONDRES 244101 km² 58789194
2 CUBA LA HAVANE 100860 km² 11184023
5 UKRAINE KIEV 603700 km² 48396470
+ Code Continent du pays 'Russie' modifié
5 RUSSIE MOSCOU 17075400 km² 143954573
+ Capitale du pays 'Chine' modifié
3 CHINE Pekin 9596960 km² 1273111290
+ Population du pays 'Allemagne' modifié
5 ALLEMAGNE BERLIN 357027 km² 82537000
+ Information des 15 pays
Code NomPays Capitale Superficie Population
2 ETATS-UNIS WASHINGTON 9629047 km² 291289535
3 CHINE Pekin 9596960 km² 1273111290
5 RUSSIE MOSCOU 17075400 km² 143954573
4 AUSTRALIE CANBERRA 7686850 km² 19834248
3 JAPON TOKYO 377835 km² 12761000
5 ALLEMAGNE BERLIN 357027 km² 82537000
5 FRANCE MARSEILLE 543964 km² 61387038
5 ITALIE ROME 301230 km² 57715620
3 COREE DU SUD SEOUL 99274 km² 48324000
5 ROYAUME-UNI LONDRES 244101 km² 58789194
2 CUBA LA HAVANE 100860 km² 11184023
5 UKRAINE KIEV 603700 km² 48396470
5 HONGRIE BUDAPEST 93030 km² 10106017
5 ROUMANIE BUCAREST 238390 km² 22272000
5 GRECE ATHENES 131940 km² 10623835
+ Information des 10 pays
Code NomPays Capitale Superficie Population
3 AFGHANISTAN KABOUL 652225 km² 29547078
1 AFRIQUE DU SUD PRETORIA 1219912 km² 42718530
5 ALBANIE TIRANA 28748 km² 3510484
1 ALGERIE ALGER 2381740 km² 31763053
5 ALLEMAGNE BERLIN 357027 km² 82537000
5 ANDORRE ANDORRA LA VELLA 468 km² 67627
1 ANGOLA LUANDA 1246700 km² 10766471
2 ANTIGUA-ET-BARBUDA SAINT-JOHNS 442 km² 67448
2 ANTILLES NEERLANDAISES WILLEMSTAD 800 km² 210000
3 ARABIE SAOUDITE RIYAD 1960582 km² 23513330
+ Pays 'Canada' trouvé à l'indice 36
2 CANADA OTTAWA 9984670 km² 31499560
+ Pays 'France' trouvé à l'indice 64
5 FRANCE MARSEILLE 543964 km² 61387038
+ Pays 'Japon' trouvé à l'indice 93
3 JAPON TOKYO 377835 km² 12761000
+ Pays 'Mexique' trouvé à l'indice 118
2 MEXIQUE MEXICO 1972550 km² 103400165
Pays DES OURAGANS existe pas... */