zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java基础(11)-输入Scanner的使用详解

JAVA基础输入 详解 11 Scanner 使用
2023-09-14 09:12:51 时间

Java基础(1)-Java的学习路线

Java基础(2)-Markdown语法

Java基础(3)-计算机基础

Java基础(4)-Java简介

Java基础(5)-win10系统卸载JDK

Java基础(6)-Win10系统下载安装配置JDK1.8

Java基础(7)-CentOS安装jdk1.8

Java基础(8)-Java程序运行机制

Java基础(9)-基础语法

Java基础(10)-JavaDoc命令行生成方式和Intellij IDEA 生成方式

Java基础(11)-输入Scanner的使用详解

Java基础(12)-流程控制之选择结构

Java基础(13)-流程控制之循环结构

Java基础(14)-流程控制之break和continue

Java基础(15)-方法详解

Java基础(16)-数组

Java基础(17)-CentOS安装配置maven

1、Scanner对象

  • java.util.Scanner 可以通过此类获取用户的输入
  • 基本语法:
Scanner s=new Scanner(System.in);
  • 通过Scanner类的next()和nextLine()方法获取输入的字符串
  • 通过hasNext()和hasNextLine()方法判断是否还有输入

使用next()方法获取输入,只能获取第一个空格之前的字符串

package com.redrose2100.scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("使用next方式接收:");

        if(scanner.hasNext())
        {
            String str=scanner.next();
            System.out.println("输入的内容为:"+str);
        }
        scanner.close();
    }
}

执行结果如下:

使用next方式接收:
hello world
输入的内容为:hello

使用nextLine()方法获取输入

package com.redrose2100.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);

        System.out.println("使用nextLine()方式获取输入:");

        if (scanner.hasNextLine())
        {
            String str=scanner.nextLine();
            System.out.println("获取到的内容为:"+str);
        }
        scanner.close();
    }
}

执行结果为:

使用nextLine()方式获取输入:
hello world
获取到的内容为:hello world

总结:

  • next():

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

    • 以Enter为结束符,也就是说nextLine方法返回的是输入回车之前的所有字符
    • 可以获得空白
  • 在大多数情况下主要使用nextLine方法,next方法因为遇到空格就结束了,所以很多情况下不会使用

如下演示scanner获取整数和小数的例子

package com.redrose2100.scanner;

import java.util.Scanner;

public class Demo03 {
    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("输入的不是整数数据.");
        }

        System.out.println("请输入小数:");
        if(scanner.hasNextFloat()){
            f=scanner.nextFloat();
            System.out.println("小数数据:"+f);
        }
        else{
            System.out.println("输入的不是小数");
        }

        scanner.close();
    }
}

执行结果如下:

请输入整数:
10
整数数据:10
请输入小数:
1.0
小数数据:1.0

使用Scanner对象的一个综合性实例:输入多个数字,并求其总和与平均数,没输入一个数字用回车确认,通过输入非数字来结束输入并输出执行语句

package com.redrose2100.scanner;

import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        // 输入多个数字,并求其总和与平均数,没输入一个数字用回车确认,通过输入非数字来结束输入并输出执行语句

        Scanner scanner =new Scanner(System.in);
        double sum=0;
        int num=0;

        while(scanner.hasNextDouble()){
            double x=scanner.nextDouble();
            num++;
            sum+=x;
            System.out.println("你输入了第"+num+"个数:"+x);
        }
        System.out.println("输入"+num+"个数总和:"+sum+" 平均数:"+(sum/num));
        scanner.close();
    }
}

执行结果如下:

1
你输入了第1个数:1.0
2
你输入了第2个数:2.0
3
你输入了第3个数:3.0
4
你输入了第4个数:4.0
5
你输入了第5个数:5.0
6
你输入了第6个数:6.0
7
你输入了第7个数:7.0
8
你输入了第8个数:8.0
9
你输入了第9个数:9.0
10
你输入了第10个数:10.0
a
输入10个数总和:55.0 平均数:5.5