Appel d'une fonction

Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011 - 4 oct. 2011 à 12:39
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011 - 4 oct. 2011 à 20:03
Bonjour,

Je débute en Java et j'ai encore quelques difficultés.

Voici une fonction permettant de créer un tableau :

   public static double [] creerTableau(int taille, double valeur) {
      double [] tab = new double [taille];
      for (int i=0; i<taille; i++) {
         tab[i] = valeur;
      }
      return tab;
   }


Pouvez-vous me donner un exemple dans lequel cette fonction serait appelée ? Je ne sais pas trop comment faire.

Merci d'avance pour vos réponses.

20 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 13:44
Bonjour,

Je ne connais pas le nom de la classe dans laquelle se trouve ta méthode mais si cette classe s'appelle Classe, il faut que tu tapes :

Classe.creerTableau(10, 10.0f);

par exemple
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 14:47
Merci Julien, j'avais oublié la syntaxe :D

Et comment afficher le contenu du tableau ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 14:56
for(int i=0; i<tableau.lenght; i++){
   System.out.println(tableau[i]);
}
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 15:01
Encore merci ! Ça fonctionne toujours. Seulement, les valeurs sont initialisées par défaut à 0. Comment faire pour modifier le contenu du tableau ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 15:36
Bon, j'ai trouvé comment modifier et afficher le contenu du tableau. Voici le code :

public class Fonction {

   public static double [] creerTableau(int taille, double valeur) {
      double [] tab = new double [taille];
      for (int i=0; i<taille; i++) {
         tab[i] = valeur;
      }
      return tab;
   }

   public static void main(String args[]) {
      Terminal.sautDeLigne(); 
      double [] t = new double [3];    
      Fonction.creerTableau(3, 3);
      for (int j=0; j<t.length; j++) {
         Terminal.ecrireString("Entrer une valeur : ");
         t[j] = Terminal.lireDouble();
      }
      Terminal.ecrireString("Contenu du tableau : ");
      for (int j=0; j<t.length; j++) {
         Terminal.ecrireString(" ");
         Terminal.ecrireDouble(t[j]);
      }
   }
}


Ça fonctionne, mais je ne trouve pas ça très joli. Y a-t-il une manière d'optimiser le code ?

Autre question : dans mon code, je fais appel à une classe existante, la classe Terminal. J'ai tenté de réécrire mon programme avec du "vrai" Java, en remplaçant ces lignes par System.out.print() et System.in.read(), mais ça ne marche pas. Me suis-je trompée dans la syntaxe ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 15:36
tableau[8] = 15.0f
par exemple, tu peux peut être chercher de la doc sur les tableau sur internet, tu apprendrais pas mal de choses je pense.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 15:36
Le code que je t'ai donné signifie l'indice 8 du tableau prend la valeur 15.
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 15:39
tableau[8] = 15.0f

Que signifie le petit "f" à côté de la valeur ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 16:22
Que 15.0 est un float sinon, il considère que c'est un double
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 16:25
Oups, j'ai commis une erreur, tu utilises un tableau de double et pas un tableau de float donc, il faut enlever le f.

Pour t'expliquer pourquoi ca marchait quand même (mais ce n'était pas très propre) :

15.0 est un double
15.0f est un float

double d 15.0f ne poses pas de problème car les doubles ont une plage de valeurs plus importante que les float. Alors que float f 15.0 pose problème car potentiellement, tu peux avoir un dépassement de capacité de la variable.
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 16:58
Merci pour toutes ces explications :)

Et que penses-tu du code que j'ai posté plus haut ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 17:29
Je ne vois pas bien l'utilité mais à part ca, ca roule.
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 17:35
C'était juste pour tester ma fonction creerTableau() :D

Et sinon, pourquoi mes instructions System.out.print() et System.in.read() ou System.in.readDouble() ne fonctionnent pas ?

Promis, après ça, j'arrête de t'embêter :p
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 17:40
Elles marchent, après tu les a peut être mal appelés...
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 17:41
Et tu ne m'embêtes pas
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 17:54
J'ai juste remplacé le code précédent par celui-là :

public class Fonction {

   public static double [] creerTableau(int taille, double valeur) {
      double [] tab = new double [taille];
      for (int i=0; i<taille; i++) {
         tab[i] = valeur;
      }
      return tab;
   }

   public static void main(String args[]) { 
      double [] t = new double [3];    
      Fonction.creerTableau(3, 3);
      for (int j=0; j<t.length; j++) {
         System.out.print("Entrer une valeur : ");
         t[j] = System.in.readDouble();
      }
      System.out.print("Contenu du tableau : ");
      for (int j=0; j<t.length; j++) {
         System.out.print(" ");
         System.out.print(t[j]);
      }
   }
}


J'ai une erreur sur le System.in.readDouble()
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 17:55
Et merci encore de prendre le temps de m'expliquer toutes ces petites choses qui doivent te sembler bien basiques à toi :D
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 19:45
Je ne connais pas la fonction readDouble, es tu certain qu'elle existe ?

Tu peux toujours fais un read tout simple et un parse en double :
t[j] = Double.parseDouble(System.in.read());


Personnellement, je n'utilise jamais ces méthodes, je préfère utiliser ceci : http://java.developpez.com/faq/java/?page=langage_fichiers#LANGAGE_lire_console ce sont des méthodes un peu plus élaborées.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
4 oct. 2011 à 19:50
Dans le lien que je t'ai donné, c'est la classe Scanner que j'utilise, je te donne un exemple simple d'utilisation, à toi de l'adapter (cherches la doc sur internet)

Scanner sc = new Scanner(System.in);
System.out.println("Entrer un mot :");
String mot = sc.nextLine();
System.out.println("Entrer un nombre :");
double d=sc.nextDouble();
sc.close();


http://download.oracle.com/javase/1,5,0/docs/api/java/util/Scanner.html
0
Tre3sh Messages postés 17 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 4 octobre 2011
4 oct. 2011 à 20:03
C'est en regardant sur le Net que j'ai trouvé la fonction readDouble().
J'ai d'abord essayé read() tout seul mais ça ne marchait pas. Du coup, j'ai essayé readDouble(), trouvé sur le Net, mais ça ne marchait pas non plus :D

J'ai vu aussi, effectivement, qu'il existait une classe Scanner.
Je te remercie pour tes liens (je les ai mis dans mes favoris), je m'y plongerai demain. J'en ai un peu marre pour ce soir...

Merci encore pour avoir répondu à toutes mes questions !
0