2010-03-24 5 views

Répondre

9

Vérifiez celui-ci:

public static void main(String[] args) { 
    String input = null; 
    int number = 0; 
    try { 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); 
     input = bufferedReader.readLine(); 
     number = Integer.parseInt(input); 
    } catch (NumberFormatException ex) { 
     System.out.println("Not a number !"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

Quel est le point de prendre le 'NumberFormatException' et puis imprimer la trace de la pile? – missingfaktor

+0

Oui, tout à fait insensé! :-) Je viens de le changer, merci! – thelost

121

Vous pouvez utiliser java.util.Scanner (API):

import java.util.Scanner; 

//... 

Scanner in = new Scanner(System.in); 
int num = in.nextInt(); 

Il peut également tokenizer entrée avec une expression régulière, etc. L'API a des exemples et il y a beaucoup d'autres dans ce site (par exemple How do I keep a scanner from throwing exceptions when the wrong type is entered?).

+5

Je seconde cette solution. –

+1

J'essaye de l'exécuter dans mon ID d'éclipse sans l'erreur de syntaxe mais son ne montrant rien dans la sortie de console quand j'essaye de produire les valeurs entières lues. Pourquoi cela est-il ainsi? –

29

Si vous utilisez Java 6, vous pouvez utiliser le oneliner suivant pour lire un entier de la console:

int n = Integer.parseInt(System.console().readLine()); 
+15

Je voudrais commenter que sous la plupart des IDE, System.console renverra null quand l'application est invoquée via un lanceur, ce qui rend difficile le débogage. Cela semble être vrai pour IDEA, Eclipse et NetBeans. –

+1

S'il entre une chaîne ou "Entrée", il lancera une exception NumberFormatException. Il est donc préférable de contrôler la chaîne avant de l'analyser en entier –

+0

et s'il y a plus d'un entier dans cette ligne séparé par l'espace? – LostMohican

16

Ici, je fournirai 2 exemples pour lire la valeur entière de l'entrée standard

Exemple 1

import java.util.Scanner; 
public class Maxof2 
{ 
    public static void main(String args[]) 
    { 
     //taking value as command line argument. 
     Scanner in = new Scanner(System.in); 
     System.out.printf("Enter i Value: "); 
     int i = in.nextInt(); 
     System.out.printf("Enter j Value: "); 
     int j = in.nextInt(); 
     if(i > j) 
      System.out.println(i+"i is greater than "+j); 
     else 
      System.out.println(j+" is greater than "+i); 
    } 
} 

Exemple 2

public class ReadandWritewhateveryoutype 
{ 
    public static void main(String args[]) throws java.lang.Exception 
    { 
System.out.printf("This Program is used to Read and Write what ever you type \nType quit to Exit at any Moment\n\n"); 
    java.io.BufferedReader r = new java.io.BufferedReader (new java.io.InputStreamReader (System.in)); 
    String hi; 
    while (!(hi=r.readLine()).startsWith("quit"))System.out.printf("\nYou have typed: %s \n",hi); 
    } 
} 

Je préfère le premier exemple, c'est facile et tout à fait compréhensible.
Vous pouvez compiler et exécuter les programmes Java en ligne sur ce site: http://ideone.com

+0

ex 2 peut ne pas être la meilleure façon d'introduire le flux d'entrée ... ou je suppose que les "objets d'entrée du système" à quelqu'un de nouveau à OOD, Java ou codage d'ailleurs - tout ce code descriptif et vous nommez l'objet clé "r" .... un wiseguy, hein? xD +1 – Tapper7

+0

L'exemple 1 n'est pas protégé contre les entrées au format faux –

4

deuxième réponse est au-dessus la plus simple.

int n = Integer.parseInt(System.console().readLine()); 

La question est "Comment lire depuis l'entrée standard".

Une console est un périphérique généralement associé au clavier et à l'affichage à partir duquel un programme est lancé.

Vous pouvez tester si aucun périphérique de console Java n'est disponible, par ex. La machine virtuelle Java n'est pas démarrée à partir d'une ligne de commande ou les flux d'entrée et de sortie standard sont redirigés. L'utilisation de la console est un moyen simple de saisir des nombres. Combiné avec parseInt()/Double(), etc.

s = cons.readLine("Enter a int: "); 
int i = Integer.parseInt(s);  

s = cons.readLine("Enter a double: "); 
double d = Double.parseDouble(s); 
+1

-1 pour ne pas avoir répondu à la question. Il ne veut pas lire à partir d'une console, mais plutôt à partir d'une entrée standard. – Ingo

+0

Question indique clairement qu'il ne veut pas lire de la console. de toute façon merci de donner quelques informations sur la façon de lire à partir de la console. –

2

vérifier celui-ci:

import java.io.*; 
public class UserInputInteger 
{ 
     public static void main(String args[])throws IOException 
     { 
     InputStreamReader read = new InputStreamReader(System.in); 
     BufferedReader in = new BufferedReader(read); 
     int number; 
       System.out.println("Enter the number"); 
       number = Integer.parseInt(in.readLine()); 
    } 
} 
3

Cela provoque des maux de tête, donc je mis à jour une solution qui fonctionnera en utilisant le matériel le plus commun et des outils logiciels disponibles pour utilisateurs en Décembre 2014. S'il vous plaît noter que le JDK/SDK/JRE/Netbeans et leurs classes ultérieures, les compilateurs de bibliothèques de modèles, les éditeurs et débogueurz sont gratuits.

Ce programme a été testé avec Java v8 u25. Il a été écrit et construit en utilisant
Netbeans IDE 8.0.2, JDK 1.8, OS est win8.1 (excuses) et le navigateur est Chrome (double excuses) - destiné à aider UNIX-cmd-line OG face à moderne GUI- IDEs Web à ZERO COST - car les informations (et les IDE) devraient toujours être libres. Par Tapper7. Pour tout le monde.

bloc de code:

package modchk; //Netbeans requirement. 
    import java.util.Scanner; 
    //import java.io.*; is not needed Netbeans automatically includes it.   
    public class Modchk { 
     public static void main(String[] args){ 
      int input1; 
      int input2; 

      //Explicity define the purpose of the .exe to user: 
      System.out.println("Modchk by Tapper7. Tests IOStream and basic bool modulo fxn.\n" 
      + "Commented and coded for C/C++ programmers new to Java\n"); 

      //create an object that reads integers: 
      Scanner Cin = new Scanner(System.in); 

      //the following will throw() if you don't do you what it tells you or if 
      //int entered == ArrayIndex-out-of-bounds for your system. +-~2.1e9 
      System.out.println("Enter an integer wiseguy: "); 
      input1 = Cin.nextInt(); //this command emulates "cin >> input1;" 

      //I test like Ernie Banks played hardball: "Let's play two!" 
      System.out.println("Enter another integer...anyday now: "); 
      input2 = Cin.nextInt(); 

      //debug the scanner and istream: 
      System.out.println("the 1st N entered by the user was " + input1); 
      System.out.println("the 2nd N entered by the user was " + input2); 

      //"do maths" on vars to make sure they are of use to me: 
      System.out.println("modchk for " + input1); 
      if(2 % input1 == 0){ 
       System.out.print(input1 + " is even\n"); //<---same output effect as *.println 
       }else{ 
       System.out.println(input1 + " is odd"); 
      }//endif input1 

      //one mo' 'gain (as in istream dbg chk above) 
      System.out.println("modchk for " + input2); 
      if(2 % input2 == 0){ 
       System.out.print(input2 + " is even\n"); 
       }else{ 
       System.out.println(input2 + " is odd"); 
      }//endif input2 
     }//end main 
    }//end Modchk 
Questions connexes