JAVA基础--用户交互Scanner

Scanner对象

Scanner是Java5的新特征,可以获取用户的输入

注意:使用前需导入Scanner工具包

import java.util.Scanner;
  • 基本语法:Scanner s = new Scanner(System.in);
  • 通过Scanner类的next()和nextLine()方法获取输入的字符串
  • 在读取前需要使用hasNext()与hasNextLine()判断是否还有输入

一、next():

  1. 一定要读取到有效字符后才可以结束输入
  2. 对输入有效字符之前遇到的空格,next()方法会自动将其去掉(即先输入空格再输入字符,前面的空格会被忽略)
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  4. next()不能得到带有空格的字符串
import java.util.Scanner;//导入Scanner工具包
public class Demo01 {
    public static void main(String[] args) {

        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式接收:");
        //判断用户有没有输入字符串
        if(scanner1.hasNext())
        {
            //使用next方式接收
            String str = scanner.next();//碰到空格结束输入
            System.out.println("输出的内容为:"+str);
        }
        //凡是属于IO流的类如果不关闭则会一直占用资源,要用完就关闭
        scanner.close();
    }

运行结果如下:

二、nextLine():

  1. 以Enter为结束符,即nextLine()方法返回的是输入回车之前的所有字符
  2. 可以获得空格
import java.util.Scanner;//导入Scanner工具包
public class Demo01 {
    public static void main(String[] args) {
        
        //使用nextLine方法接收
        //可以判断
        /*
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式接收:");
        if(scanner.hasNextLine())
        {
            //使用nextLine方法接收
            String str = scanner.nextLine();//会输出空格
            System.out.println("输出的内容为:"+str);
        }*/
        
        //也可以不判断,结果相同
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("使用nextLine方式接收:");
        String str2 = scanner2.nextLine();//会输出空格
        System.out.println("输出的内容为:"+str2);

        //凡是属于IO流的类如果不关闭则会一直占用资源,要用完就关闭
        scanner.close();
    }
}

运行结果如下:

三、nextInt():

获取整形数据

import java.util.Scanner;
public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        float f = 0.0F;
        System.out.println("请输入一个整数:");
        if(scanner.hasNextInt())
        {
            i = scanner.nextInt();//获取整形数据
            System.out.println("输出内容为:"+i);
        }
        else
        {
            System.out.println("输入的不是整数类型!");
        }

        scanner.close();
    }
}

运行结果为:

四、nextFloat():

获取浮点型数据

import java.util.Scanner;
public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        float f = 0.0F;
        System.out.println("请输入一个小数:");
        if(scanner.hasNextFloat())
        {
            f = scanner.nextFloat();//获取浮点型数据
            System.out.println("输出内容为:"+f);
        }
        else
        {
            System.out.println("输入的不是浮点数!");
        }
        scanner.close();
    }
}

实例:求和、平均数

输入多个数字,求其总和与平均数,每输入一个数字用回车确认,通过输入非数字结束输入并输出结果

import java.util.Scanner;
public class Demo03 {
    public static void main(String[] args) {
        //输入多个数字,求其总和与平均数
        //每输入一个数字用回车确认,通过输入**非数字结束输入**并输出结果
        Scanner scanner = new Scanner(System.in);
        double sum = 0; //和
        int count = 0;//计数
        
        //通过循环判断是否还有输入,并进行统计计算
        System.out.println("请输入数据:");
        while(scanner.hasNextDouble())
        {
            double x = scanner.nextDouble();
            count++;//count=count+1;计数
            sum += x;//sum=sum+x  求和
        }
        System.out.println(count + "个数的和为:" + sum);
        System.out.println(count + "个数的平均值为:" + (sum/count));

        scanner.close();//关闭IO流
    }
}

运行结果如下:

输入x(非数字)结束输入并计算结果

posted @ 2024-03-05 11:14  月亮警察  阅读(10)  评论(0编辑  收藏  举报