web-dev-qa-db-fra.com

Obtenir une entrée au clavier

Comment obtenir une simple saisie au clavier (un entier) de l'utilisateur dans la console en Java? J'ai accompli cela en utilisant le code Java.io.*, mais il est indiqué qu'il est obsolète.

Comment devrais-je le faire maintenant?

43
user1342573

Vous pouvez utiliser Scanner class

Importer d'abord:

import Java.util.Scanner;

Ensuite, vous utilisez comme ça.

Scanner keyboard = new Scanner(System.in);
System.out.println("enter an integer");
int myint = keyboard.nextInt();

Note latérale: Si vous utilisez nextInt() avec nextLine(), vous pourriez probablement avoir des problèmes, car nextInt() ne lit pas le dernier caractère de nouvelle ligne de l'entrée et donc nextLine() ne sera pas valide. être exécuté avec le comportement souhaité. Lisez-en plus sur la façon de le résoudre à la question précédente sautant nextLine en utilisant nextInt .

64
nachokk

Vous pouvez utiliser la classe Scanner comme ceci:

  import Java.util.Scanner;

public class Main{
    public static void main(String args[]){

    Scanner scan= new Scanner(System.in);

    //For string

    String text= scan.nextLine();

    System.out.println(text);

    //for int

    int num= scan.nextInt();

    System.out.println(num);
    }
}
18
Mike B

Vous pouvez aussi le faire avec BufferedReader si vous voulez valider une entrée utilisateur, comme ceci:

import Java.io.BufferedReader;
import Java.io.InputStreamReader; 
class Areas {
    public static void main(String args[]){
        float PI = 3.1416f;
        int r=0;
        String rad; //We're going to read all user's text into a String and we try to convert it later
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Here you declare your BufferedReader object and instance it.
        System.out.println("Radius?");
        try{
            rad = br.readLine(); //We read from user's input
            r = Integer.parseInt(rad); //We validate if "rad" is an integer (if so we skip catch call and continue on the next line, otherwise, we go to it (catch call))
            System.out.println("Circle area is: " + PI*r*r + " Perimeter: " +PI*2*r); //If all was right, we print this
        }
        catch(Exception e){
            System.out.println("Write an integer number"); //This is what user will see if he/she write other thing that is not an integer
            Areas a = new Areas(); //We call this class again, so user can try it again
           //You can also print exception in case you want to see it as follows:
           // e.printStackTrace();
        }
    }
}

Parce que la classe Scanner ne vous permettra pas de le faire, ou pas si facile ...

Et pour valider, vous utilisez des appels "try-catch".

13
Frakcool

Vous pouvez utiliser la classe Scanner

Pour lire depuis Clavier ( Entrée standard ) Vous pouvez utiliser Scanner est une classe du package Java.util.

Scanner package utilisé pour obtenir l'entrée des types de primitive tels que int, double etc. et strings. C'est le moyen le plus simple de lire les entrées dans un programme Java, bien que peu efficace.

  1. Pour créer une classe object sur Scanner, nous passons généralement l'objet prédéfini System.in, qui représente le flux d'entrée standard ( Keyboard ).

Par exemple, ce code permet à un utilisateur de lire un numéro à partir de System.in:

Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();

Certaines méthodes publiques dans Scanner class.

  • hasNext() Renvoie true si ce scanner a un autre jeton en entrée.
  • nextInt() Analyse le prochain jeton de l'entrée en tant qu'int.
  • nextFloat() Analyse le jeton suivant de l'entrée sous forme de float.
  • nextLine() Avance ce scanner au-delà de la ligne en cours et renvoie l'entrée qui a été ignorée.
  • nextDouble() Analyse le jeton suivant de l'entrée comme un double.
  • close() Ferme ce scanner.

Pour plus de détails sur Méthodes publiques dans la classe Scanner.

Exemple:-

import Java.util.Scanner;                      //importing class

class ScannerTest {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);       // Scanner object

    System.out.println("Enter your rollno");
    int rollno = sc.nextInt();
    System.out.println("Enter your name");
    String name = sc.next();
    System.out.println("Enter your fee");
    double fee = sc.nextDouble();
    System.out.println("Rollno:" + rollno + " name:" + name + " fee:" + fee);
    sc.close();                              // closing object
  }
}
6
anoopknr

Vous pouvez utiliser Scanner pour obtenir la ligne suivante et faire ce que vous devez faire avec la ligne entrée. Vous pouvez également utiliser JOptionPane pour faire apparaître une boîte de dialogue demandant des entrées.

Exemple de scanner:

Scanner input = new Scanner(System.in);
System.out.print("Enter something > ");
String inputString = input.nextLine();
System.out.print("You entered : ");
System.out.println(inputString);

Exemple JOptionPane:

String input = JOptionPane.showInputDialog(null,
     "Enter some text:");
JOptionPane.showMessageDialog(null,"You entered "+ input);

Vous aurez besoin de ces importations:

import Java.util.Scanner;
import javax.swing.JOptionPane;

Une classe complète Java de ce qui précède

import Java.util.Scanner;
import javax.swing.JOptionPane;
public class GetInputs{
    public static void main(String args[]){
        //Scanner example
        Scanner input = new Scanner(System.in);
        System.out.print("Enter something > ");
        String inputString = input.nextLine();
        System.out.print("You entered : ");
        System.out.println(inputString);

        //JOptionPane example
        String input = JOptionPane.showInputDialog(null,
        "Enter some text:");
        JOptionPane.showMessageDialog(null,"You entered "+ input);
    }
}
3
s-hunter

Importation: import Java.util.Scanner;

Définissez vos variables: String name; int age;

Définissez votre scanner: Scanner scan = new Scanner(System.in);

Si vous voulez taper:

  • Texte: name = scan.nextLine();
  • Entier: age = scan.nextInt();

Fermez le scanner si vous n'en avez plus besoin: scan.close();

2
喬治扎菲

Si vous avez Java 6 (vous devriez en avoir, d'ailleurs) ou une version ultérieure, procédez comme suit:

 Console console = System.console();
 String str = console.readLine("Please enter the xxxx : ");

S'il vous plaît rappelez-vous de faire:

 import Java.io.Console;

C'est ça!

2
M-D
import Java.util.Scanner; //import the framework


Scanner input = new Scanner(System.in); //opens a scanner, keyboard
System.out.print("Enter a number: "); //Prompt the user
int myInt = input.nextInt(); //store the input from the user

Faites moi savoir si vous avez des questions. Assez explicite. J'ai commenté le code pour que vous puissiez le lire. :)

2
Dummy Code

Ajouter une ligne:

import Java.util.Scanner;

Créez ensuite un objet de Scanner class:

Scanner s = new Scanner(System.in);

Maintenant, vous pouvez appeler à tout moment:

int a = Integer.parseInt(s.nextLine());

Ceci stockera la valeur integer de votre clavier.

1
Yeshdeep Kumar