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:

  1. Ce qui est fait dans l'énoncé suivant?

    DataInputStream in = new DataInputStream(System.in);
    

    Si in est un objet de DataInputStream ensuite, ce qui est nouveau et ce qui ne l'instruction sur le côté droit de la déclaration ci-dessus faire?

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

35
demandé sur Peter Mortensen 2011-12-19 15:06:37

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());
61
répondu Jomoos 2011-12-19 11:17:48

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);
25
répondu adatapost 2011-12-19 11:09:35

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.

6
répondu fge 2011-12-19 11:13:23

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.

5
répondu Peter Lawrey 2018-04-18 09:12:14

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){
        }
    }
}
1
répondu Prakhar 2018-04-18 09:25:12