zoukankan      html  css  js  c++  java
  • Java

    java.util.Scanner是Java5的新特征,我们可以通过 Scanner 类来获取用户的输入。

    下面是创建 Scanner 对象的基本语法:

     Scanner s = new Scanner(System.in); 
    

    接下来我们演示一个最简单的的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

    使用 next 方法:

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

    执行以上程序输出结果为:

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

    可以看到 com 字符串并未输出,接下来我们看 nextLine。

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

    执行以上程序输出结果为:

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

    可以看到 com 字符串输出。

    next()与nextLine()区别

    next():

    • 1、一定要读取到有效字符后才可以结束输入。
    • 2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • next()不能得到带有空格的字符串。

    nextLine():

    • 1、以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
    • 2、可以获得空白。

    如果要输入int或float类型的数据,在Scanner类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:

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

    执行以上程序输出结果为:

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

    以下实例我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

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

    执行以上程序输出结果为:

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

    更多内容可以参考 API 文档://www.w3cschool.cn/manual/jdk1.6/

  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/alan-blog-TsingHua/p/10080434.html
Copyright © 2011-2022 走看看