在Java中以空格分隔输入数组

在OJ中经常遇到在以空格分隔输入数组的情况,在c和c++下还挺好整,在java里头不太好搞了,而且在java这种语法特别冗长的语言中做这种跟主要思想无关的体力活特别烦人( ´_ゝ`)
虽然在python中也只能以类似的方法输入,但体验好多了( ゚∀。)

先看看代码:

public static void main(String[] args) throws IOException {

    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))
    //竞赛中一般不用Scanner,因为这玩意儿相比BufferedReader来说实在是太慢了
    String[] input = reader.readLine().split(" ");
    //先以字符串类型存储用户输入的全部数据,包括空格
    //ps:草,没想到Java的String类也自带split方法
    int[] numbers = new int[input.length - 1];
    for(int i = 0; i < numbers.length; i++) {
        numbers[i] = Integer.parseInt(input[i+1]);
    }//就是把字符串变成整型数字,不过不能直接强制转换数组,所以害得套个for循环(悲)
    System.out.println("Array = "+Arrays.toString(numbers));
}

刚刚讲到python也是以类似的方法输入的,那也来一段code:

List = input()
List = List.split(" ")
[int(List[i]) for i in range(0,len(List)]

只有短短三行,是不是简短多了(喜)


3.22更新
草草草 没想到还有StreamTokenizer这么好用的东西

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {

	public static void main(String[] args) throws IOException {// 不抛掉异常就等着CE吧

		StreamTokenizer T = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
		/**
		 * 注意:
		 * 0.StreamTokenizer的创建必须基于一个输入流
		 * 1.T.nval的类型为double,若需获取int类型需强制转换
		 */
		T.nextToken();
		int len = (int) T.nval;
		int[] arr = new int[len];
		for (int i = 0; i < len; i++) {
			T.nextToken();
			arr[i] = (int) T.nval;
		}
		System.out.println(Arrays.toString(arr));
	}

}

输入:

6 1 1 4 5 1 4

输出:

[1, 1, 4, 5, 1, 4]

注:

  • BufferedReader是缓冲流,后面有时间写一篇博客详细介绍一下缓冲流
  • 关于StreamTokenizer的使用,这些大佬写得更加详细:
    https://www.cnblogs.com/likailiche/p/4462062.html
    https://blog.csdn.net/cy973071263/article/details/105588082
  • 真要详细了解这些内容,建议阅读官方文档及源码
  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前言:本资源来自于javaeye,原资源链接地址:http://www.javaeye.com/topic/67398 原文如下: 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 apache网站下下载 在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1.匹配图象; 2 匹配email地址; 3 匹配匹配并提取url ; 4 匹配并提取http ; 5.匹配日期 6 匹配电话; 7 匹配身份证 8 匹配邮编代码 9. 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号 0) 12 匹配正整数 13 匹配非正整数(负整数 + 0) 14 匹配负整数; 15. 匹配整数 ; 16 匹配非负浮点数(正浮点数 + 0) 17. 匹配正浮点数 18 匹配非正浮点数(负浮点数 + 0) 19 匹配负浮点数; 20 .匹配浮点数; 21. 匹配由26个英文字母组成的字符串; 22. 匹配由26个英文字母的大写组成的字符串 23 匹配由26个英文字母的小写组成的字符串 24 匹配由数字和26个英文字母组成的字符串; 25 匹配由数字、26个英文字母或者下划线组成的字符串; java源码: /* * Created on 2005-4-15 * * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The backslash character \\ 反斜杠 * \0n The character with octal value 0n (0 <= n <= 7) \0n 十进制数 (0 <= n <= 7) * \0nn The character with octal value 0nn (0 <= n <= 7) \0nn 十进制数 0nn (0 <= n <= 7) * \0mnn The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7) \0mnn 十进制数 0mnn (0 <= m <= 3, 0 <= n <= 7) * \xhh The character with hexadecimal value 0xhh \xhh 十六进制数 0x

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值