kelas JavaScanner


java.util.Scanner ialah ciri baharu Java5 Kami boleh mendapatkan input pengguna melalui kelas Pengimbas.

Berikut ialah sintaks asas untuk mencipta objek Pengimbas:

 Scanner s = new Scanner(System.in);

Seterusnya kami menunjukkan input data paling mudah dan mendapatkan input melalui kaedah next() dan nextLine() kelas Pengimbas String, sebelum membaca biasanya kita perlukan Gunakan hasNext dan haxNextLine untuk menentukan sama ada masih terdapat data input:


Gunakan kaedah seterusnya:

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);  
        }  

    }  
}

Hasil output untuk melaksanakan program di atas ialah:

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

Anda dapat melihat bahawa rentetan com bukan output, mari lihat nextLine seterusnya.

Gunakan kaedah 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);  
        }  

    }  
}

Hasil output untuk melaksanakan atur cara di atas ialah:

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

Anda boleh melihat output rentetan com.

Perbezaan antara next() dan nextLine()

next():

  • 1 Pastikan anda membaca aksara yang sah sebelum ini Anda boleh menamatkan input.

  • 2 Kaedah seterusnya() akan mengalih keluar kekosongan yang ditemui secara automatik sebelum memasukkan aksara yang sah.

  • 3 Hanya selepas memasukkan aksara yang sah, gunakan ruang kosong yang dimasukkan selepasnya sebagai pemisah atau penamat.

  • next() tidak boleh mendapatkan rentetan dengan ruang.

nextLine():

  • 1 Enter ialah penamat, yang bermaksud kaedah nextLine() mengembalikan input sebelum pengangkutan kembali semua watak.

  • 2. Anda boleh dapat ruang kosong.

Jika anda ingin memasukkan data jenis int atau float, ia juga disokong dalam kelas Pengimbas, tetapi sebaiknya gunakan kaedah hasNextXxx() untuk mengesahkan sebelum memasukkan, dan kemudian gunakan nextXxx() untuk Membaca:

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("输入的不是小数!") ;  
        }  
    }  
}

Hasil output melaksanakan program di atas ialah:

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

Dalam contoh berikut, kita boleh memasukkan berbilang nombor dan mengira jumlah dan puratanya untuk mengesahkan setiap nombor yang dimasukkan. Tamatkan input dengan memasukkan bukan nombor dan output hasil pelaksanaan:

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));  
    }  
}

Hasil keluaran melaksanakan program di atas ialah:

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

Untuk maklumat lanjut, sila rujuk dokumen API: http://www.php.cn /manual/jdk1.6/.