Comment utiliser la méthode readline () en Java?
je suis débutant en Java, et je lisais le sujet de donner des valeurs aux variables à travers le readLine()
méthode du clavier. Le programme pour cela est donné dans le livre est comme suit:
import java.io.DataInputStream
class Reading
{
public static void main(String args[])
{
DataInputStream in = new DataInputStream(System.in);
int intnumber=0;
float floatnumber=0.0f;
try {
system.out.println("enter an integer: ");
intnumber = Integer.parseInt(in.readline());
system.out.println("enter a float number: ");
floatnumber = Float.valueOf(in.readline()).floatvalue();
}
// Rest of code
je voudrais poser les questions suivantes:
Ce qui est fait dans l'énoncé suivant?
DataInputStream in = new DataInputStream(System.in);
Si
in
est un objet deDataInputStream
ensuite, ce qui est nouveau et ce qui ne l'instruction sur le côté droit de la déclaration ci-dessus faire?pourquoi différentes méthodes ont-elles été utilisées pour mettre la valeur entière dans intnumber et la valeur flottante dans floatnumber?
5 réponses
je vous conseille d'aller avec Scanner
au lieu de DataInputStream
. Scanner
est spécialement conçu à cet effet et introduit dans Java 5. Voir les liens suivants pour savoir comment utiliser Scanner
.
Exemple
Scanner s = new Scanner(System.in);
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
utiliser les classes BufferedReader et InputStreamReader.
BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();
Ou utiliser java.util.Scanner
méthodes de classe.
Scanner scan=new Scanner(System.in);
DataInputStream
est juste un décorateur sur un InputStream
(System.in
is) qui permet de lire en utilisant des méthodes plus commodes.
de la Float.valueOf()
, eh bien, c'est curieux, car Float
a .parseFloat()
. Ici le code saisit un Float
.valueOf()
qui se transforme en primitif float
type d'utilisation .floatValue()
, ce qui est inutile avec Java 1.5+ en raison du désembuage automatique.
et comme d'autres réponses le disent à juste titre, ces méthodes sont de toute façon obsolètes.
en résumé: je serais prudent quant au code que vous copiez. Il est possible que vous copiez du code qui fonctionne, plutôt que du code bien choisi.
en numérombre interne, l'indice est utilisé et en numérombre flottant la valeur est utilisée pourquoi?
il n'y a pas de bonne raison que je puisse voir. C'est une utilisation incohérente de L'API comme vous le soupçonnez.
Java est sensible à la casse, et il n'y en a pas Readline()
méthode. Peut-être vous dire readLine ().
Dataainputstream.readLine () est déprécié en faveur de L'utilisation de BufferedReader.readLine ();
Cependant, pour votre cas, j'utiliserais la classe Scanner.
Scanner sc = new Scanner(System.in);
int intNum = sc.nextInt();
float floatNum = sc.nextFloat();
si vous voulez savoir ce qu'est une classe, je vous suggère de jeter un coup d'oeil à le Javadoc.
ceci expliquera cela, je pense...
import java.io.*;
class reading
{
public static void main(String args[]) throws IOException
{
float number;
System.out.println("Enter a number");
try
{
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
String a = br.readLine();
number = Float.valueOf(a);
int x = (int)number;
System.out.println("Your input=" + number);
System.out.println("Your input in integer terms is = " + x);
}
catch(Exception e){
}
}
}