Java的输入(详细)

引言

在 Java 编程中,与用户进行交互是非常常见的需求,而实现用户输入功能则是交互的重要环节。Java 提供了多种方式来获取用户输入,每种方式都有其特点和适用场景。本文将详细介绍 Java 中常用的输入方法,帮助你在不同的项目中灵活运用。

Scanner输入

Scanner 类是 Java 提供的一个方便的工具类,用于扫描输入流中的数据。它可以处理各种基本数据类型的输入,并且可以根据分隔符分割输入。

在使用Scanner类之前我们要先去创造一个关于Scanner类的对象

Scanner in=new Scanner(System.in);

它有两种比较重要的方法:

1、hasNext

以这个开头的方法,是用于检查输入源中是否还有下一个标记可用,常用的方法有:

hasNext():如果输入源中还有下一个标记(非空格字符),返回 true。

hasNextLine():如果输入源中还有下一行(非空行),返回 true。

hasNextInt():如果输入源中还有下一个整数,返回 true。

hasNextDouble():如果输入源中还有下一个浮点数,返回 true。

hasNextBoolean():如果输入源中还有下一个布尔值,返回 true。

2、next

以这个开头的方法:用于从输入源中获取下一个标记并返回相应的数据类型,常用的有:

next():从输入源中获取并返回一个字符串,默认以空格为分隔符,以回车 Enter 为结束符,回车 Enter 后的内容则放入缓冲区。

nextLine():从输入源中获取并返回一行字符串(以换行符为分隔符)。

nextInt():从输入源中获取并返回一个整数。

nextDouble():从输入源中获取并返回一个浮点数。

nextBoolean():从输入源中获取并返回一个布尔值(“true” 或 “false”)。

而next()和nextLine()有一些不同:

next方法:

读取的字符串不包含分隔符,如果输入中存在多个以空格分隔的单词,next() 方法只会返回第一个单词。在读取之前会忽略输入中的前导空格。

nextLine方法:

从输入源中读取并返回一整行字符串,包括换行符 \n 在内。

它会读取输入源中的全部内容直到遇到换行符,或者输入结束。

nextLine() 方法返回的字符串可以包含空格和其他特殊字符。

例如,用两种方法来读取大小未知的一维数组

描述:输入若干个整数,整数之间用空格分隔。请将这些整数保存到数组 nums 中,然后将其打印出来。

(1)使用 nextInt() 逐个读取:

class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Integer> nums = new ArrayList<>();
        while (scanner.hasNextInt()) {
            nums.add(scanner.nextInt());
        }
        System.out.println("数组 nums 的元素为:");
        for (int num : nums) {
            System.out.print(num + " ");
        }
        scanner.close();
    }
}

注意事项:

如果在控制台手动输入若干个整数,期望手动停止输入后,程序结束读取整数,可以使用其他方式来指示结束输入的条件。一种常见的方式是通过输入特定的字符或字符串来表示结束;

由于是逐个读取,因此事先不知道数组的长度,所以上面代码中使用 list 来存储;

(2)使用 nextLine() 先全部读取,然后逐个解读:

class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        input = input.trim();  //这个是可以去除字符串首尾的所有空白字符(空格,换行符等等)
        String[] numStrings = input.split("\\s+"); 
        int[] nums = new int[numStrings.length];
        for (int i = 0; i < numStrings.length; i++) {
            nums[i] = Integer.parseInt(numStrings[i]);
        }
        System.out.println("\n数组 nums 的元素为:");
        for (int num : nums) {
            System.out.print(num + " ");
        }
        scanner.close();
    }
}

解释:代码的split()方法是可以根据正则表达式将字符串分割成多个字符串,并返回一个包含这些子字符串的数组。

正则表达式“\\s+”:

  • \s 是正则表达式中的元字符,表示任意空白字符,包括空格、制表符、换行符等。

  • + 是正则表达式中的量词,表示前面的元素(这里是 \s)出现一次或多次。

  • 由于在 Java 字符串中,反斜杠 \ 是转义字符,所以要表示正则表达式中的 \s,需要写成 \\s

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值