Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

exception

5 réponses
Avatar
artintel
Bonjour,

Je n'arrive pas a trouver avec BlueJ une solution a un probleme qui
semble simple. J'appelle un emethode qui renvoie un integer. Je
souhaite seulement que dans un cas la methode ne me renvoie rien.
j'arrive pas.
J'utilise 2 classes.
"ClasseQuiAppelle" appelle "ClasseAppelee".
Une metode de "ClasseAppelee" renvoie un entier si l'entier transmis
par une methode de "ClasseQuiAppelle" egale la valeur d'un attribut
static de "ClasseAppelee". Je souhaite juste que si l'entier transmis
ne correspond pas a cette valeur la metode ne renvoie rien....

##########################################

public class ClasseAppelee

{
public static int valeurStatic = 4;
public static int valeuReference = 7;

/** Retourne la valeur de valeurStatic si la valeur de reference est
bonne*/

public static int retournerValeurStatic(int pvaleuReference)
{
int y = 0;

if ( pvaleuReference == valeuReference)
{
y = valeurStatic;
}

if ( pvaleuReference != valeuReference)
{
System.out.println("Ne pas retourner (y) et revenir en arriere pour re-
saisir ClasseQuiAppelle.aficherValeurstaticDeClassApele
(plaValeuReference)");
}

return y;
}
}

##########################################

public class ClasseQuiAppelle

{

/** Appelle de la methode int = ClasseAppelee.retournerValeurStatic
(int pvaleuReference)*/

public static void aficherValeurstaticDeClassApele(int
plaValeuReference)

{
int y = ClasseAppelee.retournerValeurStatic(plaValeuReference);
System.out.println("valeurstatique de ClasseAppelee ="+y);
}
}

5 réponses

Avatar
yliur
Je ne comprends pas très bien où tu vas avec tout ça, mais peut-être que
ta fonction qui renvoie un int pourrait renvoyer un objet Integer à la
place ? Comme ça elle pourrait renvoyer null ou une valeur entière. La
fonction appelante devrait alors récupérer cette valeur et regarder si
elle vaut null.

Une fonction ne peut pas rien renvoyer, sauf si son type de retour est
vide (void).


a écrit :
Bonjour,

Je n'arrive pas a trouver avec BlueJ une solution a un probleme qui
semble simple. J'appelle un emethode qui renvoie un integer. Je
souhaite seulement que dans un cas la methode ne me renvoie rien.
j'arrive pas.
J'utilise 2 classes.
"ClasseQuiAppelle" appelle "ClasseAppelee".
Une metode de "ClasseAppelee" renvoie un entier si l'entier transmis
par une methode de "ClasseQuiAppelle" egale la valeur d'un attribut
static de "ClasseAppelee". Je souhaite juste que si l'entier transmis
ne correspond pas a cette valeur la metode ne renvoie rien....

##########################################

public class ClasseAppelee

{
public static int valeurStatic = 4;
public static int valeuReference = 7;

/** Retourne la valeur de valeurStatic si la valeur de reference est
bonne*/

public static int retournerValeurStatic(int pvaleuReference)
{
int y = 0;

if ( pvaleuReference == valeuReference)
{
y = valeurStatic;
}

if ( pvaleuReference != valeuReference)
{
System.out.println("Ne pas retourner (y) et revenir en arriere pour re-
saisir ClasseQuiAppelle.aficherValeurstaticDeClassApele
(plaValeuReference)");
}

return y;
}
}

##########################################

public class ClasseQuiAppelle

{

/** Appelle de la methode int = ClasseAppelee.retournerValeurStatic
(int pvaleuReference)*/

public static void aficherValeurstaticDeClassApele(int
plaValeuReference)

{
int y = ClasseAppelee.retournerValeurStatic(plaValeuReference);
System.out.println("valeurstatique de ClasseAppelee ="+y);
}
}


Avatar
artintel
Oui, ca doit faire mon affaire !!! Je ne connaissais pas cette
subtilite entre int et integer. Je teste cela plus tard, merci ;o)

On 18 mar, 21:32, yliur wrote:
Je ne comprends pas très bien où tu vas avec tout ça, mais peut-ê tre que
ta fonction qui renvoie un int pourrait renvoyer un objet Integer à la
place ? Comme ça elle pourrait renvoyer null ou une valeur entière. L a
fonction appelante devrait alors récupérer cette valeur et regarder s i
elle vaut null.

Une fonction ne peut pas rien renvoyer, sauf si son type de retour est
vide (void).

a écrit :

> Bonjour,

> Je n'arrive pas a trouver avec BlueJ une solution a un probleme qui
> semble simple. J'appelle un emethode qui renvoie un integer. Je
> souhaite seulement que dans un cas la methode ne me renvoie rien.
> j'arrive pas.
> J'utilise 2 classes.
> "ClasseQuiAppelle" appelle "ClasseAppelee".
> Une metode de "ClasseAppelee" renvoie un entier si l'entier transmis
> par une methode de "ClasseQuiAppelle" egale la valeur d'un attribut
> static de "ClasseAppelee". Je souhaite juste que si l'entier transmis
> ne correspond pas a cette valeur la metode ne renvoie rien....

> ##########################################

> public class ClasseAppelee

> {
> public static int valeurStatic = 4;
> public static int valeuReference = 7;

> /** Retourne la valeur de valeurStatic si la valeur de reference est
> bonne*/

> public static int retournerValeurStatic(int pvaleuReference)
> {
> int y = 0;

> if ( pvaleuReference == valeuReference)
> {
> y = valeurStatic;
> }

> if ( pvaleuReference != valeuReference)
> {
> System.out.println("Ne pas retourner (y) et revenir en arriere pour re-
> saisir ClasseQuiAppelle.aficherValeurstaticDeClassApele
> (plaValeuReference)");
> }

> return y;
> }
> }

> ##########################################

> public class ClasseQuiAppelle

> {

> /** Appelle de la methode int = ClasseAppelee.retournerValeurStatic
> (int pvaleuReference)*/

> public static void aficherValeurstaticDeClassApele(int
> plaValeuReference)

> {
> int y = ClasseAppelee.retournerValeurStatic(plaValeuReference);
> System.out.println("valeurstatique de ClasseAppelee ="+y);
> }
> }


Avatar
artintel
Oui, effectivement ca marche ;o) Merci, je suis surpris comment
fonctrionne cette classe, je suis perdu avec le "brassage" de types
string et int.. Bon, je met le code pour les debutants que ca
interessent, mais j'ai pas compris comment ca marche par rapport au
typage.

public class ClasseQuiAppelle

{

/** Appelle la methode Integer = ClasseAppelee.retournerValeurStatic
(int plaValeuReference)*/

public static void aficherValeurstaticDeClassApele(int
plaValeuReference)

{
Integer y = ClasseAppelee.retournerValeurStatic(plaValeuReference);
if ( y != null)
System.out.println("valeurstatique de ClasseAppelee ="+y);
else
System.out.println("Valeure de reference non valide");
}
}

##############################################

public class ClasseAppelee

{
public static int valeurStatic = 4;
public static int valeuReference = 7;

/** Retourne la valeur de valeurStatic (Integer) si la valeur de
reference est bonne*/

public static Integer retournerValeurStatic(int pvaleuReference)
{
Integer x = new Integer(0);

if ( pvaleuReference == valeuReference)
{
x = valeurStatic;
}

if ( pvaleuReference != valeuReference)
{
x = null;
}

return x;
}
}

##############################################

On 18 mar, 21:32, yliur wrote:
Je ne comprends pas très bien où tu vas avec tout ça, mais peut-ê tre que
ta fonction qui renvoie un int pourrait renvoyer un objet Integer à la
place ? Comme ça elle pourrait renvoyer null ou une valeur entière. L a
fonction appelante devrait alors récupérer cette valeur et regarder s i
elle vaut null.

Une fonction ne peut pas rien renvoyer, sauf si son type de retour est
vide (void).

a écrit :



> Bonjour,

> Je n'arrive pas a trouver avec BlueJ une solution a un probleme qui
> semble simple. J'appelle un emethode qui renvoie un integer. Je
> souhaite seulement que dans un cas la methode ne me renvoie rien.
> j'arrive pas.
> J'utilise 2 classes.
> "ClasseQuiAppelle" appelle "ClasseAppelee".
> Une metode de "ClasseAppelee" renvoie un entier si l'entier transmis
> par une methode de "ClasseQuiAppelle" egale la valeur d'un attribut
> static de "ClasseAppelee". Je souhaite juste que si l'entier transmis
> ne correspond pas a cette valeur la metode ne renvoie rien....

> ##########################################

> public class ClasseAppelee

> {
> public static int valeurStatic = 4;
> public static int valeuReference = 7;

> /** Retourne la valeur de valeurStatic si la valeur de reference est
> bonne*/

> public static int retournerValeurStatic(int pvaleuReference)
> {
> int y = 0;

> if ( pvaleuReference == valeuReference)
> {
> y = valeurStatic;
> }

> if ( pvaleuReference != valeuReference)
> {
> System.out.println("Ne pas retourner (y) et revenir en arriere pour re-
> saisir ClasseQuiAppelle.aficherValeurstaticDeClassApele
> (plaValeuReference)");
> }

> return y;
> }
> }

> ##########################################

> public class ClasseQuiAppelle

> {

> /** Appelle de la methode int = ClasseAppelee.retournerValeurStatic
> (int pvaleuReference)*/

> public static void aficherValeurstaticDeClassApele(int
> plaValeuReference)

> {
> int y = ClasseAppelee.retournerValeurStatic(plaValeuReference);
> System.out.println("valeurstatique de ClasseAppelee ="+y);
> }
> }- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
yliur
a écrit :
Oui, effectivement ca marche ;o) Merci, je suis surpris comment
fonctrionne cette classe, je suis perdu avec le "brassage" de types
string et int.. Bon, je met le code pour les debutants que ca
interessent, mais j'ai pas compris comment ca marche par rapport au
typage.



Quelques précisins :

- Java possède des "types primitifs", qui ne sont pas des objets :
boolean, char, byte, short, int, long, float, double. int c'est un
entier sur 4 octets (juste ça : les 4 octets).
- Aux types primitifs correspondent des "classes d'enveloppement" (ou
d'emballage) : Boolean, Character, Byte, Short, Integer, Long, Float,
Double. Les objets de ces classes sont de vrais objets et possèdent un
attribut. Par exemple Integer possède un attribut de type int.
- Quelques différences entre les deux :
- il n'est pas possible de modifier la valeurs des objets des classes
d'enveloppement (on peut réaffecter une variable, mais l'objet lui-même
ne peut plus être modifié, comme pour les chaînes (String))
- ces objets sont de vrais objets, on peut les mettre dans une liste
par exemple ; et une référence sur l'un de ces objets peut naturellement
valoir null
- Depuis Java 5, il est possible de faire des conversions implicites
entre un type primitif et sa classe d'enveloppement : par exemple quand
tu écris :
Integer x = new Integer(0) ;
tu pourrais aussi bien écrire :
Integer x = 0 ;
(le compilateur transforme ça en la forme précédente)
Et
x = valeurStatic ;
est automatiquement transformé en
x = new Integer (valeurStatic) ;
- Les conversions fonctionnent aussi dans l'autre sens :
Code avec conversions explicites :
Integer val1 = new Integer (3) ;
int val2 = val1.intValue() ;
Code avec conversions implicites :
Integer val1 = 3 ;
int val2 = val1 ;
(note : la deuxième ligne lève une exception si val1 vaut null)

Est-ce qu'il y a encore quelque chose qui te gêne ?
Avatar
artintel
Non, non, pour ce qui est des type int et Integer c'est bon. La
j'essaye de comprendre comment et ou lancer JBuilder ??? L'est ou
celui la ? ;o)

On 19 mar, 23:26, yliur wrote:
a écrit :

> Oui, effectivement ca marche ;o) Merci, je suis surpris comment
> fonctrionne cette classe, je suis perdu avec le "brassage" de types
> string et int.. Bon, je met le code pour les debutants que ca
> interessent, mais j'ai pas compris comment ca marche par rapport au
> typage.

Quelques précisins :

- Java possède des "types primitifs", qui ne sont pas des objets :
boolean, char, byte, short, int, long, float, double. int c'est un
entier sur 4 octets (juste ça : les 4 octets).
- Aux types primitifs correspondent des "classes d'enveloppement" (ou
d'emballage) : Boolean, Character, Byte, Short, Integer, Long, Float,
Double. Les objets de ces classes sont de vrais objets et possèdent un
attribut. Par exemple Integer possède un attribut de type int.
- Quelques différences entre les deux :
   - il n'est pas possible de modifier la valeurs des objets des clas ses
d'enveloppement (on peut réaffecter une variable, mais l'objet lui-mê me
ne peut plus être modifié, comme pour les chaînes (String))
   - ces objets sont de vrais objets, on peut les mettre dans une lis te
par exemple ; et une référence sur l'un de ces objets peut naturellem ent
valoir null
- Depuis Java 5, il est possible de faire des conversions implicites
entre un type primitif et sa classe d'enveloppement : par exemple quand
tu écris :
   Integer x = new Integer(0) ;
tu pourrais aussi bien écrire :
   Integer x = 0 ;
(le compilateur transforme ça en la forme précédente)
Et
   x = valeurStatic ;
est automatiquement transformé en
   x = new Integer (valeurStatic) ;
- Les conversions fonctionnent aussi dans l'autre sens :
   Code avec conversions explicites :
     Integer val1 = new Integer (3) ;
     int val2 = val1.intValue() ;
   Code avec conversions implicites :
     Integer val1 = 3 ;
     int val2 = val1 ;
   (note : la deuxième ligne lève une exception si val1 vaut null )

Est-ce qu'il y a encore quelque chose qui te gêne ?