java Scanner类的使用

java Scanner 类

Java.util.Scanner是java 5的新特征,可以直接通过Scanner类来获取用户的输入,下面创建Scanner对象的基本语法:
Scanner s =new Scanner(System.in);
接下来通过Scanner类的next()与nextLine()方法获取字符串,在读取时一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据:
使用next()方法:
ScannerDemo.java文件代码

package ScannerImport;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.*in*);
        //从键盘接受数据
        //next方式接受字符串
        System.*out*.print("next方式接收");
        //判断是否还有输入
        if(scanner.hasNext()){
            String str1 =scanner.next();
            System.*out*.println("输入的数据为:"+str1);
        }
        scanner.close();


    }
}

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

next方式接收
scanner 123
输入的数据为:scanner

进程完成,退出码 0

发现后后面的123字符串并未输出

我们再使用nextLine()方法

package ScannerImport;

import java.util.Scanner;

public class ScannerDemo2 {
    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);
            }
            scan.close();
    }
}

执行程序输出结果为

nextLine方式接受:
scanner 123
输入数据为:scanner 123

进程完成,退出码 0

发现 字符串123正常输出

next()与nextLine()的区别

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

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

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

输出结果为

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

实例演示

对输入的成绩进行分类,调用写好的分类算法进行输出
将nextXxx()放入while循环之中,便可以多次输入数据和判断分类

package ScannerImport;

import java.util.Scanner;

public class ScoreClassiFY {

    public static void main(String[] args){
        Scanner sc=new Scanner(System.*in*);
        System.*out*.print("输入成绩:");

        while(sc.hasNextInt()){//判断数据类型

           int a=sc.nextInt();//进行循环接受输入
           Classify(a);//把接收到的数值使用方法 a为接受到数值
        }

            sc.close();
    }
    public static void Classify(int  score) {//score为参数,用来接main函数传过来的参数

        if (score <= 100 && score > 90) {
            System.*out*.println("you get A");
        } else if (score <= 90 && score > 80) {
            System.*out*.println("you get B");
        } else if (score<=80&&score>70) {
            System.*out*.println("you get C");
        }else if(score>=60&&score<60){
            System.*out*.println("you get D");
        }else System.*out*.println("you are not pass");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37913435/article/details/81253065