web-dev-qa-db-fra.com

Comment utiliser la méthode readline () en Java?

Je suis débutant en Java et je lisais le sujet de la définition de valeurs pour les variables via la méthode readLine() du clavier. Le programme pour cela est donné dans le livre est le suivant:

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 veux poser les questions suivantes:

  1. Que fait-on dans la déclaration suivante?

    DataInputStream in = new DataInputStream(System.in);
    

    Si in est un objet de DataInputStream alors quelle est la nouveauté et que fait la déclaration à droite de la déclaration ci-dessus?

  2. Pourquoi différentes méthodes ont-elles été utilisées pour placer la valeur entière dans intnumber et la valeur float dans floatnumber?

41
Junior Bill gates

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());
68
Jomoos

Utilisez 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);
30
adatapost

Un DataInputStream n'est qu'un décorateur sur un InputStream (qui System.in Est) ce qui permet de lire à l'aide de méthodes plus pratiques.

En ce qui concerne la Float.valueOf(), eh bien, c'est curieux, car Float a également .parseFloat(). Ici, le code saisit un Float avec .valueOf() qu’il transforme en primitive float type en utilisant .floatValue(), ce qui n’est pas nécessaire avec Java 1.5+ en raison du déballage automatique.

Et comme d’autres réponses le disent à juste titre, ces méthodes sont de toute façon obsolètes.

6
fge

En résumé: je ferais attention à quel code vous copiez. Il est possible que vous copiez du code qui fonctionne, plutôt que du code bien choisi.

Dans intnumber, parseInt est utilisé et dans floatnumber, valueOf est utilisé, pourquoi?

Il n'y a pas de bonne raison que je puisse voir. C'est une utilisation incohérente des API comme vous le suspectez.


Java est sensible à la casse, et il n'y a pas de méthode Readline(). Peut-être que vous voulez dire readLine ().

DataInputStream.readLine () est déconseillé en faveur de BufferedReader.readLine ();

Cependant, dans 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 rapide coup d'œil à le Javadoc .

5
Peter Lawrey

Cela va l'expliquer, 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){
        }
    }
}
2
Prakhar