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

Entrecote ou null ou quoi ?

10 réponses
Avatar
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;
}
}

10 réponses

Avatar
Samuel Devulder
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.
Avatar
Xavier Tarrago
Probablement la chaine vide "". (tester avec equals)

"artintel" a écrit dans le message de news:

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;
}
}


Avatar
Xavier Nayrac
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
Avatar
artintel
On 10 juil, 09:42, "Xavier Tarrago"
wrote:
Probablement la chaine vide "". (tester avec equals)

"artintel" a écrit dans le message de news:




> 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.
Avatar
Xavier Nayrac
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
Avatar
Samuel Devulder
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.
Avatar
Samuel Devulder
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.
Avatar
artintel
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;
}
Avatar
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 Nayrac
http://personalbugtracker.free.fr
Avatar
artintel
On 10 juil, 13:26, Xavier Nayrac wrote:
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)