System.in.read des soucis avec cette methode

jo-concept -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je remercie la communauté pour l'aide
qu'elle me fourni . cependant j'ai des petits soucis
voici un code que j'ai trouver sur ce lien http://www.java2s.com/Code/JavaAPI/java.lang/Systeminread.htm


import java.io.IOException;

public class MainClass {

public static void main(String[] args) {
int inChar;
System.out.println("Enter a Character:");
try {
inChar = System.in.read();
System.out.print("You entered ");
System.out.println(inChar);
}
catch (IOException e){
System.out.println("Error reading from user");
}
}
}


en l'executant il fonctionne bien sauf que tous les caracteres que j'entre au clavier il les converti automatiquement en entier
j'ai changer le type de la variable " inchar " de int vers char le programme ne fonctionne plus mais par contre quand je change de int vers un autre type numerique comme double par exemple le programme fonctionne de nouveau.
mon soucis est de pouvoir lire une valeur de type chaine a partir de la methode System.in.read comment faire merci


1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Pour convertir ton entier en caractère, tu dois le caster en char :

import java.io.IOException; 

public class MainClass 
{
	public static void main(String[] args)
	{
		try
		{
			System.out.print("Enter a character : ");
			char c = (char) System.in.read();
			System.out.print("You entered "+c);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
}

La confiance n'exclut pas le contrôle
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Remarque : plutôt que d'utiliser read (qui est pas très pratique), tu peux regarder la classe Scanner :

import java.util.Scanner;

public class MainClass 
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		System.out.print("Enter a character : ");	
		char c = (char) sc.nextByte();
		System.out.print("You entered "+c);
		
		sc.close();
	}
}
0