Je suis sur Java 6. Utilisation de DataInputStream in = new DataInputStream(System.in);
pour lire les entrées de l'utilisateur. Lorsque readLine () est obsolète. Quelle est la solution pour la lecture de la valeur utilisateur?
DataInputStream in = new DataInputStream(System.in);
int num;
try
{
num = Integer.parseInt(in.readLine()); //this works
num = Integer.parseInt(in); //just in doesnt work.
}
catch(Exception e)
{
}
veuillez expliquer comme il se doit lorsque readLine () est obsolète.
InputStream
est fondamentalement une construction binaire. Si vous souhaitez lire des données text (par exemple, à partir de la console), vous devez utiliser une variable Reader
contenant une description. Pour convertir une InputStream
en une Reader
, utilisez InputStreamReader
. Créez ensuite une BufferedReader
autour de la Reader
et vous pourrez lire une ligne en utilisant BufferedReader.readLine()
.
Plus d'alternatives:
La dépréciation et les alternatives sont généralement déjà expliquées de manière explicite dans javadocs . Ce serait donc le premier endroit où chercher la réponse. Pour DataInputStream
, vous pouvez le trouver ici . La méthode readLine()
est ici . Voici un extrait de pertinence:
Obsolète. Cette méthode ne convertit pas correctement les octets en caractères. A partir de JDK 1.1, la méthode préférée pour lire les lignes de texte est via la méthode
BufferedReader.readLine()
. Les programmes qui utilisent la classeDataInputStream
pour lire les lignes peuvent être convertis pour utiliser la classeBufferedReader
en remplaçant le code de la forme:DataInputStream d = new DataInputStream(in);
avec:
BufferedReader d = new BufferedReader(new InputStreamReader(in));
Le codage des caractères peut alors être explicitement spécifié dans le constructeur de InputStreamReader
.
Le Scanner
qui a été introduit depuis Java 1.5 est également une bonne alternative (et moderne).
Le dessous ne fonctionne pas,
num = Integer.parseInt(in);
Au lieu de cela, vous devriez utiliser:
num = Integer.parseInt(in.readLine());
readLine()
lit une entrée de ligne jusqu'au saut de ligne.