西洲的雪

导航

java学习笔记——java流程控制01.用户交互Scanner

用户交互Scanner

一、Scanner对象

java提供了Scanner工具类来获取用户的输入

需要导入java包

import java.util.Scanner;

基本语法

Scanner s = new Scanner(System.in);

实例:

import java.util.Scanner;

public class Demo {
    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();	//IO流的类如果不关闭就会一直占用资源
    }
}

image

这里遇到一个next和nextLine的使用问题,next在遇到空格的时候就直接输出了,而nextLine是把回车作为结束符,这里如果用next方法获取输入的话,输出的内容就变成了“Hello”,我想一般情况下应该都是使用nextLine,那为什么不直接抛弃next呢?查了一下发现nextLine使用过程中有可能出现问题,把链接贴上来,方便自己解决问题。

Java中.next()和.nextLine()的区别-CSDN博客

【Java常见问题】Scanner中nextLine()方法没有执行就直接跳过了-CSDN博客

二、Scanner进阶使用

import java.util.Scanner;

public class Demo {
    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();	//关闭scanner
    }
}

例子:求输入的数的和与平均数

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int n = 0;
        while (scanner.hasNextDouble()){
            sum += scanner.nextDouble();
            n++;
        }
        double ave = sum/n;
        System.out.println("输入的" + n + "个数的和为" + sum);
        System.out.println("输入的" + n + "个数的平均数为" + ave);
        scanner.close();
    }
}

image

疑问:java中回车并不会结束事件,除了输入非double型数据来结束循环,还有没有其他方式可以结束demo中的循环?

posted on 2021-08-05 14:34  西洲的雪  阅读(34)  评论(0编辑  收藏  举报