Entrecote ou null ou quoi ?

Le
artintel
Bonour,

Je recupere dans returnString ce que j'ai saisi au clavier jusqu'a ce
que j'utilise la touche Entree.

Ma question c'est, quand je fais la touche Entree directement, je
recupere quoi comme string ?

Je n'arrive pas a tester cette valeur

@@@@@@@@@@@@@
@
@ PROGRAMME JAVA
@
@@@@@@@@@@@@@

import java.util.Scanner;

public class SaisirClavier
{

public String saisir(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
String returnString = objetScaner.next();
return returnString;
}
}
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Samuel Devulder
Le #19730891
artintel a écrit :
Bonour,

Je recupere dans returnString ce que j'ai saisi au clavier jusqu'a ce
que j'utilise la touche Entree.

Ma question c'est, quand je fais la touche Entree directement, je
recupere quoi comme string ?

Je n'arrive pas a tester cette valeur...



je sais pas.. que dit la javadoc ?

Sinon utilise le débuger dans un IDE java correct (eclipse a tout
hasard) et tu verras bien quelle chaine tu récupère.. voir même si tu
récupère une chaine ou un NoSuchElementException() produit par le next()
vu qu'il est probable que le hasNext() retourne false en pareil cas.

public String next()
Finds and returns the next complete token from this scanner.
A complete token is preceded and followed by input that matches
the delimiter pattern. This method may block while waiting for
input to scan, even if a previous invocation of hasNext()
returned true.

Specified by:
next in interface Iterator<String>
Returns:
the next token
Throws:
NoSuchElementException - if no more tokens are available
IllegalStateException - if this scanner is closed
See Also:
Iterator



sam.
Xavier Tarrago
Le #19733381
Probablement la chaine vide "". (tester avec equals)

"artintel"
Bonour,

Je recupere dans returnString ce que j'ai saisi au clavier jusqu'a ce
que j'utilise la touche Entree.

Ma question c'est, quand je fais la touche Entree directement, je
recupere quoi comme string ?

Je n'arrive pas a tester cette valeur...

@@@@@@@@@@@@@
@
@ PROGRAMME JAVA
@
@@@@@@@@@@@@@

import java.util.Scanner;

public class SaisirClavier
{

public String saisir(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
String returnString = objetScaner.next();
return returnString;
}
}


Xavier Nayrac
Le #19733691
artintel a écrit :

Je n'arrive pas a tester cette valeur...



Je ne vois pas de test dans ton code.

Tu pourrais commencer avec (non-testé) :

import java.util.Scanner;

public class SaisirClavier
{

public String saisir(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
String returnString = objetScaner.next();
return returnString;
}



public void test(String message) {
String str = saisir(message);
if (str == null)
System.out.println("Nul.");
else if (str.equals(""))
System.out.println("Vide.");
else
System.out.println(str);
}

}



--
Xavier Nayrac
http://personalbugtracker.free.fr
artintel
Le #19734331
On 10 juil, 09:42, "Xavier Tarrago" wrote:
Probablement la chaine vide "". (tester avec equals)

"artintel"



> Bonour,

> Je recupere dans returnString ce que j'ai saisi au clavier jusqu'a ce
> que j'utilise la touche Entree.

> Ma question c'est, quand je fais la touche Entree directement, je
> recupere quoi comme string ?

> Je n'arrive pas a tester cette valeur...

> @@@@@@@@@@@@@
> @
> @ PROGRAMME JAVA
> @
> @@@@@@@@@@@@@

> import java.util.Scanner;

> public class SaisirClavier
> {

> public String saisir(String pmesage)
> {
> System.out.println(pmesage);
> Scanner objetScaner = new Scanner(System.in);
> String returnString = objetScaner.next();
> return returnString;
> }
> }- Masquer le texte des messages précédents -

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



Non, j'ai teste :

public class TestFunction
{

public static void main(String[] args)
{
Object lObjet = new Object();
SaisirClavier saisie = new SaisirClavier();
lObjet = saisie.saisirObjet("saisie de Entree");
System.out.println("Classe lObjet => "+lObjet.getClass().getName());

}

}

public class SaisirClavier
{

public Object saisirObjet(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
Object returnObjet = objetScaner.next();
System.out.println(returnObjet.toString());
return returnObjet;
}
}

Tant que je fais la touche Entree sans rien avoir rentree avant, il
n'y a que des retour chariot a l'affichage, Saisir clavier ne renvoie
rien...Pas null, pas "", nada.
Xavier Nayrac
Le #19734661
artintel a écrit :
Tant que je fais la touche Entree sans rien avoir rentree avant, il
n'y a que des retour chariot a l'affichage, Saisir clavier ne renvoie
rien...Pas null, pas "", nada.



Nada, c'est pas possible :)
Un newline tout simplement : "n" ?

--
Xavier Nayrac
http://personalbugtracker.free.fr
Samuel Devulder
Le #19734761
artintel a écrit :

public Object saisirObjet(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
Object returnObjet = objetScaner.next();



Déjà ici j'aujouterais un println("next passed"); juste après le next().

System.out.println(returnObjet.toString());
return returnObjet;
}
}

Tant que je fais la touche Entree sans rien avoir rentree avant, il
n'y a que des retour chariot a l'affichage, Saisir clavier ne renvoie
rien...Pas null, pas "", nada.



La doc dit que le next() est bloquant tant qu'il n'a pas lu un token.
Donc je pense bien que tu ne passe jammais après le next(). D'où
l'utilité de mon println() supplémentaire.

sam.
Samuel Devulder
Le #19734751
artintel a écrit :

public Object saisirObjet(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
Object returnObjet = objetScaner.next();



Déjà ici j'aujouterais un println("next passed"); juste après le next().

System.out.println(returnObjet.toString());
return returnObjet;
}
}

Tant que je fais la touche Entree sans rien avoir rentree avant, il
n'y a que des retour chariot a l'affichage, Saisir clavier ne renvoie
rien...Pas null, pas "", nada.



La doc dit que le next() est bloquant tant qu'il n'a pas lu un token.
Donc je pense bien que tu ne passe jammais après le next(). D'où
l'utilité de mon println() supplémentaire.

sam.
artintel
Le #19734841
On 10 juil, 12:47, Samuel Devulder wrote:
artintel a écrit :

>    public Object saisirObjet(String pmesage)
>    {
>            System.out.println(pmesage);
>            Scanner objetScaner = new Scanner(System.in);
>            Object returnObjet = objetScaner.next();

Déjà ici j'aujouterais un println("next passed"); juste après le ne xt().

>            System.out.println(returnObjet.toString());
>            return returnObjet;
>    }
> }

> Tant que je fais la touche Entree sans rien avoir rentree avant, il
> n'y a que des retour chariot a l'affichage, Saisir clavier ne renvoie
> rien...Pas null, pas "", nada.

La doc dit que le next() est bloquant tant qu'il n'a pas lu un token.
Donc je pense bien que tu ne passe jammais après le next(). D'où
l'utilité de mon println() supplémentaire.

sam.



Pareil, l'affichage n'a lieu qu'apres que j'ai rentre au moins un
caractere, sinon, c'est juste un retour ligne a l'affichage....

public Object saisirObjet(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
Object returnObjet = objetScaner.next();
System.out.println("next passed");
System.out.println(returnObjet.toString());
return returnObjet;
}
Xavier Nayrac
Le #19734961
artintel a écrit :
import java.util.Scanner;

public class SaisirClavier
{

public String saisir(String pmesage)
{
System.out.println(pmesage);
Scanner objetScaner = new Scanner(System.in);
String returnString = objetScaner.next();
return returnString;
}
}



Ne pourrais-tu pas utiliser nextLine() à la place de next() pour être
tranquille ?

--
Xavier Nayrac
http://personalbugtracker.free.fr
artintel
Le #19735831
On 10 juil, 13:26, Xavier Nayrac
artintel a écrit :

> import java.util.Scanner;

> public class SaisirClavier
> {

>    public String saisir(String pmesage)
>    {
>            System.out.println(pmesage);
>            Scanner objetScaner = new Scanner(System.in);
>            String returnString = objetScaner.next();
>            return returnString;
>    }
> }

Ne pourrais-tu pas utiliser nextLine() à la place de next() pour être
tranquille ?

--
Xavier Nayrachttp://personalbugtracker.free.fr



Et oui, nextLine() juste la touche Entree, ca renvoie un string vide
<=> ""

Super merci ;o)
Publicité
Poster une réponse
Anonyme