在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
  • 真要详细了解这些内容,建议阅读官方文档及源码

在Java中以空格分隔输入数组相关推荐

  1. Java中IO流,输入输出流概述与总结(转载自别先生文章)

    Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...

  2. Java中forEach, 用来遍历数组

    这里的for是Java中forEach, 用来遍历数组的.for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中.和for(int i=0;i< ...

  3. Java中如何打印出一个数组中所有元素呢?

    转自: Java中如何获取出一个数组中最大元素值呢? 数组简介: 数组(Array)是有序的元素序列.若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为 ...

  4. Java中如何通过键盘输入一个数组以及创建方式

    Java中数组创建 方式一: int[] arr = new int[3]; 方式二: int[] arr = new int[]{1,2,3,4,5}; 方式三: int[] arr = {1,2, ...

  5. Java中如何通过键盘输入一个字符串(数组等相关操作)

    如何在自己的程序中进行键盘输入与输出,废话不多说,直接上代码: 第一种: //1不限制输入数组的长度 import java.util.Scanner;public class InputArrayN ...

  6. Java中如何通过键盘输入一个数组

    有时候在编写Jave的时候需要键盘输入一个数组,本小白也是看了几篇博客后才知道了如何在自己的程序中进行键盘输入,废话不多说,直接上代码: 第一种方法:(不限制输入数组的长度) System.out.p ...

  7. java中使用nextLine(); 没有输入就自动跳过的问题?

    [问题分析] 必要的知识:in.nextLine();不能放在in.nextInt();代码段后面 否则in.nextLine();会读入"\n"字符,但"\n" ...

  8. Java中如何将以byte数组给出的数据转换为double数组形式

    1 致谢 感谢陈玮学长的代码  由于学习了他的代码 我才最终得出了正确的结论 2 问题描述 今天编程的时候遇到1个问题 需要从一个二进制文件中读取double[]的数据 我们使用的编程语言是Java语 ...

  9. Java中I/O(输入/输出)的操作

    Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 1.流概述 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种.I/O(In ...

最新文章

  1. 清华硕士眼中的2021届算法岗秋招
  2. [解决]CXF wsdl2java 生成代码存在的一些问题
  3. 数组中两个数的最大异或值 两数异或值一定小于两数相加和
  4. 220V双向TVS二极管,如何正确选型?
  5. Linux进程+进程间通信IPC
  6. docker rocketmq4.7.0
  7. 材料凝固计算机模拟,金属基复合材料凝固过程计算机模拟Ⅲ.pdf
  8. java esclient query_elasticsearch 口水篇(4)java客户端 - 原生esClient
  9. iOS-保存图片到(自定义)相册步骤
  10. JXSE 2.5 : What's Cool #6 -- PeerGroup Executor and ScheduledExcutor
  11. 浏览器播放rtsp流媒体解决方案
  12. 安全渗透测试 服务器 系统,一次完整的安全渗透测试
  13. Day21.Python项目案例
  14. 360测绘云Quake网络空间测绘系统双领域上榜“安全牛”
  15. 一米村长讲故事机器人_村长讲故事
  16. 去年净亏7.37亿美元,“自动驾驶第一股”的商业化之痛
  17. python送程序员收入_程序员学Python后惊叹,这么丰厚的收入是Java给不了的!
  18. 面试时,HR问你职业规划,教你如何回答,得100分!
  19. 海龟如何保留米帝手机号
  20. vue实现全选和反选

热门文章

  1. 【计算机视觉】图像全景拼接 RANSAC
  2. #考试酷#B1_If-then-else Statements
  3. 大数据前景分析:Hadoop将被Spark替代?
  4. 计算机专业学生参加igem,中国科大2019iGEM代表队斩获一金一银 再续辉煌
  5. Allure-用例描述
  6. Mac设置安装任何来源文件的方法
  7. 电信,请您挺起胸膛赚钱
  8. WMA文件信息格式分析及代码
  9. 如何在windows下运行.sh文件
  10. CRMEBv4.X微商城/小程序商城/公众号商城/H5商城系统