Maison  >  Article  >  Java  >  Explication détaillée de l'implémentation des données d'entrée en Java

Explication détaillée de l'implémentation des données d'entrée en Java

黄舟
黄舟original
2017-08-13 09:46:511206parcourir

Dans le processus de développement de programmes Java, il est courant d'avoir besoin d'obtenir des valeurs d'entrée​​à partir du clavier, mais Java ne nous fournit pas scanf() comme le langage C, ou cin() fourni par C++ pour obtenir les valeurs de saisie au clavier. Fonctions prêtes à l'emploi ! Java ne fournit pas une telle fonction, ce qui ne veut pas dire que nous sommes impuissants face à cette situation. Veuillez jeter un œil aux trois solutions suivantes :

Plusieurs méthodes sont répertoriées ci-dessous :

Méthode. 1 : Recevez un caractère de la console et imprimez-le

import java.io.*;
public static void main(String [] args) throws IOException{ 
         System.out.print("Enter a Char:"); 
         char i = (char) System.in.read(); 
         System.out.println("your char is :"+i); 
}

Bien que cette méthode permette d'obtenir les caractères saisis à partir du clavier, System.out.read() ne peut obtenir qu'un seul caractère à la fois. , le type de variable qui entre ne peut être que char. Lorsque nous saisissons un nombre et espérons obtenir une variable entière, nous devons modifier le type de variable, ce qui est plus gênant.

Méthode 2 : Recevez une chaîne de la console et imprimez-la. Dans cette question, nous devons utiliser la classe BufferedReader et la classe InputStreamReader

import java.io.*;
public static void main(String [] args) throws IOException{ 
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
           String str = null; 
           System.out.println("Enter your value:"); 
           str = br.readLine(); 
           System.out.println("your value is :"+str); 
}

afin de pouvoir obtenir la chaîne que nous saisissons.

Méthode 3 : Je pense que cette méthode est la plus simple et la plus puissante, qui consiste à utiliser la classe Scanner

import java.util.Scanner;
public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("请输入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("请输入你的年龄:"); 
         int age = sc.nextInt(); 
         System.out.println("请输入你的工资:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息如下:"); 
         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 
}

Ce code a montré que la classe Scanner Qu'il s'agisse d'une chaîne, d'une donnée entière ou d'une variable de type float, il vous suffit d'effectuer une petite modification pour réaliser la fonction ! Sans aucun doute, il est le plus puissant !

Cependant, il y a une chose à laquelle vous devez faire attention lorsque vous utilisez la troisième méthode de saisie, qui est la fonction nextLine(). Il existe une fonction avec la même fonction que next in. la fonction io package.(), leurs fonctions sont les mêmes, mais quelles sont les différences d'implémentation ? Veuillez regarder le code suivant :

public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("请输入你的年龄:"); 
         int age = sc.nextInt(); 
         System.out.println("请输入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("请输入你的工资:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息如下:"); 
         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 
}

La différence entre ce code et l'exemple de code donné ci-dessus pour la troisième méthode d'entrée d'implémentation est que, ce code exécute d'abord nextInit() puis nextLine(), et un exemple de la troisième méthode consiste à exécuter nextLine() d'abord, puis à exécuter nextInit() lorsque vous exécutez les deux éléments. de code, vous constaterez que le troisième exemple de cette méthode peut obtenir une saisie normale, mais ce code ignore la saisie du nom après avoir appuyé sur la touche Entrée lors de la saisie de l'âge et passe directement à la saisie du salaire (vous pouvez exécuter le code. vous-même pour voir) Pourquoi est-ce ? En fait, après avoir exécuté la fonction nextInit() et appuyé sur la touche entrée, le caractère de retour chariot sera absorbé par la fonction nextLine(). En fait, la fonction nextLine() est exécutée pour absorber le caractère de retour chariot saisi (c'est le cas). ne veut pas dire qu'elle n'est pas exécutée. fonction nextLine), j'ai mentionné la fonction next() qui a la même fonction que nextLine(). La différence entre elles est que la fonction next() ne reçoit pas de caractères de retour chariot, de tabulations ou de tabulations. les touches espace, etc., utilisez donc la fonction nextLine(). Lors de la saisie, sachez que le caractère de retour chariot que vous appuyez peut être absorbé par celui-ci, provoquant un BUG dans le programme ! ! !

Enfin, résumons brièvement la différence entre next() et nextLine() :

En Java, la méthode next() n'accepte pas les espaces avant de recevoir des données valides, toutes les entrées telles que. les espaces ou les touches de tabulation sont ignorés. S'il existe des données valides, il se terminera lorsque ces touches seront rencontrées. nextLine() peut accepter des espaces ou des touches de tabulation, et sa saisie doit se terminer par la touche Entrée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn