Programmation en java

Fermé
nass - Modifié par nass le 16/08/2010 à 18:01
 Utilisateur anonyme - 20 août 2010 à 12:12
bonjour,
je viens de débuter en java j'ai écrit un programme mais il génére des érreurs le voici:
svp aidez moi le plus vite possible si vous avez une solution.

public class ClsTableau1 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static int indiceville(String pnomville){
String []villes ="paris", "marseille", "lyon", "nice", "bordeau"};
villes [0] = "paris";
int i = 0;
for(i = 0; i<villes.length; i++){
if(villes[i]==(pnomville)){
return i;
}
System.out.println("villes =" + "i");

}

}

public static int PRixTrajet (String pdepart,String parrive){
int tab2 [] = {1500,1000,1200,2000,800};
int pose1 = indiceville(pdepart);
int pose2 = indiceville(parrive);
int somm = 0;
int i = pose1;
for(i= pose1; i<tab2.length; i++){
somm = somm + pose1;
return somm;
System.out.println(tab2[i]);
}
}
}

A voir également:

4 réponses

Salut,

Quand tu as des erreurs n'oublies pas de nous signaler lesquelles...

Tout d'abord, il y a d'autres manières de faire, mais nous garderons ton programme comme tu l'as pensé et corrigerons les erreurs.

-La première erreur ligne 60: il manque l'{ du début
-Après correction: javac ne trouve pas le return de fin de méthode indiceville
même s'il y a bien return i; mais pas au bon endroit tu peux remplacer ce return
par un break et ajouter return i; en fin de boucle
-L'erreur unreachable statement signifie que la ligne System.out.println(tab2[i]);
ne peut être atteinte puisqu'étant après un return (return somm;).
-Remplace ce return somm; par break (c'est la même chose que pour la méthode indiceville)
mais après System.out.println(tab2[i]);
et ajoute return somm; en fin de boucle.
-Compile (il ne doit plus y avoir d'erreurs signalées, ce qui ne veut pas dire que c'est ok)

Pour tester la méthode indiceville tu peux ajouter ces 2 lignes dans la méthode main:
public static void main(String[] args) { 
      // TODO Auto-generated method stub
      // 2 exemples pour tester la méthode indiceville:
         indiceville("Kebemer"); //ok
         indiceville("Lougas");  //n'existe pas
      }


On passera à la suite après.

Cordialement,

Dan
0
merci j'ai ajouté ces deux lignes et j'ai mis un break comme vous l'aviez dis mais ça marque toujours érreurs comme koid
void methods cannot return a value à la ligne return i; et return somm;
public static int PRixTrajet(String pdepart, string parrive) { // dans cette ligne on me met illegal modifier for parameter PRixTrajet;only final is permitted de méme cette ligne aussi
public static int indiceville(String pnomville){
par contre cette ligne int pose1 = indiceville(pdepart); m'affiche comme érreur the method indiceville(String) is undefined for the type ClsTableau1.
voici les érreurs que j'ai pu renconté de nouveau.
merci d'avance
0
Utilisateur anonyme
18 août 2010 à 05:51
Re,

Tu as certainement modifié tes méthodes avant que je te réponde car les 2 méthodes dont tu as donné le code sont sans void...

Donc les modifs que je te propose de faire sont pour les 2 méthodes sans void.

Je vois également que tu as changé le nom des villes (ce qui n'est pas gènant) et que tes 2 méthodes sont toujours sans void ce qui signifie que tu dois compiler une autre source.

Voici donc les modifs proposées pour la méthode indiciville actuelle, puis le minimum à faire dans l'autre pour que tu puisses compiler:

public class ClsTableau1 { 
   
   /** 
   * @param args 
   */ 
       public static void main(String[] args) { 
      // TODO Auto-generated method stub
      // 2 exemples pour faire un premier test :
         indiceville("Marseille"); //OK
         indiceville("Lougas"); // n'existe pas
      }
       
       public static int indiceville(String pnomville){ 
         String []villes ={"Paris", "Marseille", "Lyon", "Nice", "Bordeaux"}; 
      //villes [0] = "paris"; // cette ligne est inutile
         boolean trouve = false;
         int i = 0; 
         for(i = 0; i<villes.length; i++){ 
            //if(villes[i]==(pnomville)){
            if(villes[i].equals(pnomville)){
            //System.out.println("villes =" + "i");
               trouve = true;
               break;
               //return i; 
            }
         }
         if (trouve)
            System.out.println("La ville " + pnomville + " existe en i = " + i);
         else
            System.out.println("La ville " + pnomville + " n'existe pas dans le tableau villes!!!");
         return i;
      } 
   
      public static int PRixTrajet (String pdepart,String parrive){ 
         int tab2 [] = {1500,1000,1200,2000,800}; 
         int pose1 = indiceville(pdepart); 
         int pose2 = indiceville(parrive); 
         int somm = 0; 
         int i = pose1; 
         for(i= pose1; i<tab2.length; i++){ 
            somm = somm + pose1; 
            //return somm; 
            System.out.println(tab2[i]);
            break;
         }
         return somm;
      }
   }


Pour la suite il faut que tu m'indique ce que tu dois faire avec la méthode PRixTrajet que tu devrais nommer prixTrajet(...
-Ce que sont pdepart et parrive,
-pose1 et pose2
J'imagine que le contenu de prixTrajet est une sorte de tarif, mais je ne vois pas comment tu penses l'utiliser.

Merci donc de m'en dire plus pour qu'on puisse continuer...
Cordialement,
Dan
0
merci cette fois ça a marché sans érreur. Pour la suite on m'a demandé d'écrire une méthode qui calcule le prix d'un trajet étant donnés les noms des villes de départ et d'arrivée. C'est pour cela j'ai mis:
public static int PRixTrajet (String pdepart,String parrive){
pdepart et parrive sont les prix de départ et d'arrivée
int pose1 = indiceville(pdepart); // pose1 est une variable qui doit recevoir le prix de départ
int pose2 = indiceville(parrive); // pose2 est une variable qui doit recevoir le prix d'arrivée
cordialement,
Nass
0
Que fait ta méthode PrixTrajet?Il doit évidement avoir une fonction qui calcul théoriquement le prix du trajet entre deux par ce que ce que tu écris ne calcule pas forcément le prix du trajet entre deux villes à ma connaissance.et un prix n'est pas en général un entier donc c'est plûtot un double que doit renvoyer ta méthode...
Si tu peux dire un peux plus sur le calcul du prix de trajet.
0
Bonjour dans tes deux méthodes déjà tu retournes tes valeurs avant de faire ton System.out.println(...) donc ca ne marchera pas vu que le return sort de la méthode.
tu as écrit
System.out.println("villes =" + "i"); 
si le compilateur devrait l'afficher il ferra ceci
 ville=i
vu que ton i est entre "".
Je te suggère de ne pas écrire des
System.out.println
vu que tes codes retournent des
int
donc ce que tu peux faire c'est de renvoyer un -1 vu que les indices sont toujours positives comme ca tu pourras mieux les gérer dans ton main;
public static int indiceville(String pnomville){ 
          final String []villes ={"paris", "marseille", "lyon", "nice", "bordeau"};  
          int i = 0; 
          for(i = 0; i<villes.length; i++){ 
               if(villes[i]==(pnomville))return i; 
          }
         return -1;

} 

dans ce cas dans ton main tu peux faire ceci
int ind=indiceville("paris");
if(ind>0)System.out.prinltn("Ville trouvée à indice"+ind);
else System.out.prinltn("La ville n'existe pas")
0
merci fabrice je vais essayé ta méthode aussi
nass
0
Utilisateur anonyme
20 août 2010 à 12:12
Salut,

Ton fichier tarifs peut être un tableau 2 dimensions de ce type:

public class ClsTableau1{ 
private static String[][] tarifs = {
{"Paris",       // départ                                    [0][0]
  "0.00",       // prix Paris >> Paris                     [0][1]
  "1500.00",  // prix Paris >> Marseille                [0][2]
  "1000.00",  // prix Paris >> Lyon                     [0][3]
  "1200.00",  // prix Paris >> Nice                      [0][4]
  "800.00"},  // prix Paris >> Bordeaux               [0][5]
            
 {"Marseille",  // départ                                  [1][0]
   "1500.00",  // Marseille >> Paris                    [1][1]
   "0.00",     // Marseille >> Marseille                 [1][2]
   "500.00",   // Marseille >> Lyon                     [1][3]                             
   "150.00",   // Marseille >> Nice                      [1][4]
    "400.00"},  // Marseille >> Bordeaux              [1][5]
            
 {"Lyon",       // départ                                  [2][0]
   "1000.00",  // Lyon >> Paris                         [2][1]
   "500.00",   // Lyon >> Marseille                     [2][2]
   "0.00",     // Lyon >> Lyon                           [2][3]
   "200.00",   // Lyon >> Nice                          [2][4]
   "600.00"},  // Lyon >> Bordeaux                   [2][5]
            
 {"Nice",       // départ                                   [3][0]
   "1200.00",  // Nice >> Paris                          [3][1]
   "150.00",   // Nice >> Marseille                      [3][2]
   "200.00",   // Nice >> Lyon                           [3][3]
   "0.00",     // Nice >> Nice                            [3][4]
   "500.00"},  // Nice >> Bordeaux                    [3][5]
            
 {"Bordeaux",   // départ                                [4][0]
   "800.00",   // Bordeaux >> Paris                    [4][1]
   "400.00",   // Bordeaux >> Marseille               [4][2]
   "600.00",   // Bordeaux >> Lyon                    [4][3]
   "500.00",   // Bordeaux >> Nice                     [4][4]
   "0.00"},    // Bordeaux >> Bordeaux	              [4][5]
 };


Il n'est plus nécessaire d'utiliser le tableau indiceville[]

Important:
-c'est un tableau de String, si tu dois faire des calculs, il faut convertir le String obtenu en float ou double

Bien entendu ces tarifs sont plus ou moins fantaisistes...
L'accès se fait comme ceci:
tarifs[pose1][pose2 +1]


La mise en page est dégueu mais bon...

Dis moi ce que tu en penses et si tu as besoin d'aide pour le code n'hésites pas. Je me suis déja amusé à le coder.

Cordialement,

Dan
0