Classe JavaScanner


java.util.Scanner est une nouvelle fonctionnalité de Java5 Nous pouvons obtenir les entrées de l'utilisateur via la classe Scanner.

Ce qui suit est la syntaxe de base pour créer un objet Scanner :

 Scanner s = new Scanner(System.in);

Ensuite, nous démontrons la saisie de données la plus simple et obtenons l'entrée via les méthodes next() et nextLine() de la classe Scanner String, avant de lire il faut généralement Utilisez hasNext et haxNextLine pour déterminer s'il existe encore des données d'entrée :


Utilisez la méthode suivante :

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
		// 从键盘接收数据  

		//next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if(scan.hasNext()){   
        	String str1 = scan.next();
        	System.out.println("输入的数据为:"+str1);  
        }  

    }  
}

Le résultat de l'exécution du programme ci-dessus est :

$ javac ScannerDemo.java
$ java ScannerDemo
next方式接收:
php com
输入的数据为:php

Vous pouvez voir que la chaîne com n'est pas sortie, regardons ensuite nextLine.

Utilisez la méthode nextLine :


import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
		// 从键盘接收数据  

		//nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判断是否还有输入
        if(scan.hasNextLine()){   
        	String str2 = scan.nextLine();
        	System.out.println("输入的数据为:"+str2);  
        }  

    }  
}

Le résultat de l'exécution du programme ci-dessus est :

$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
php com
输入的数据为:php com

Vous pouvez voir la sortie de la chaîne com.

La différence entre next() et nextLine()

next() :

  • 1. Assurez-vous de lire les caractères valides avant. Vous pouvez mettre fin à la saisie.

  • 2. La méthode next() supprimera automatiquement les espaces rencontrés avant de saisir des caractères valides.

  • 3. Seulement après avoir saisi des caractères valides, utilisez l'espace vide saisi après eux comme séparateur ou terminateur.

  • next() ne peut pas obtenir de chaînes avec des espaces.

nextLine() :

  • 1 Enter est le terminateur, ce qui signifie que la méthode nextLine() renvoie l'entrée avant le retour chariot. tous les personnages.

  • 2. Vous pouvez obtenir un espace vide.

Si vous souhaitez saisir des données de type int ou float, elles sont également prises en charge dans la classe Scanner, mais il est préférable d'utiliser la méthode hasNextXxx() pour vérifier avant la saisie, puis utilisez nextXxx() pour lire :

import java.util.Scanner;  

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
		// 从键盘接收数据  
        int i = 0 ;  
        float f = 0.0f ;  
        System.out.print("输入整数:");  
        if(scan.hasNextInt()){                 
			// 判断输入的是否是整数  
            i = scan.nextInt() ;                
			// 接收整数  
            System.out.println("整数数据:" + i) ;  
        }else{                                 
			// 输入错误的信息  
            System.out.println("输入的不是整数!") ;  
        }  
        System.out.print("输入小数:");  
        if(scan.hasNextFloat()){              
			// 判断输入的是否是小数  
            f = scan.nextFloat() ;             
			// 接收小数  
            System.out.println("小数数据:" + f) ;  
        }else{                                
			// 输入错误的信息  
            System.out.println("输入的不是小数!") ;  
        }  
    }  
}

Le résultat de l'exécution du programme ci-dessus est :

$ javac ScannerDemo.java
$ java ScannerDemo
输入整数:12
整数数据:12
输入小数:1.2
小数数据:1.2

Dans l'exemple suivant, nous pouvons saisir plusieurs nombres et calculer leur somme et leur moyenne. pour confirmer chaque numéro saisi. Terminez la saisie en saisissant un non-numéro et affichez le résultat de l'exécution :

import java.util.Scanner; 

class ScannerDemo   
{  
    public static void main(String[] args)   
    {  
        Scanner scan = new Scanner(System.in);  
  
        double sum = 0;  
        int m = 0;  
  
        while(scan.hasNextDouble())  
        {  
            double x = scan.nextDouble();  
            m = m + 1;  
            sum = sum + x;  
        }  
  
        System.out.println(m+"个数的和为"+sum);  
        System.out.println(m+"个数的平均值是"+(sum/m));  
    }  
}

Le résultat de l'exécution du programme ci-dessus est :

$ javac ScannerDemo.java
$ java ScannerDemo
12
23
15
21.4
end
4个数的和为71.4
4个数的平均值是17.85

Pour plus d'informations, veuillez reportez-vous au document API : http://www.php.cn /manual/jdk1.6/.