Java提供两种方式进行键盘的输入, BufferedReader 和 Scanner

一.用BufferedReader进行输入

提供的方法有:

  • readLine(); // 以enter为结束标志,读取一行数据,返回一个字符串,

注意点1:导入三个包(也可以直接import java.io.*; 美滋滋)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

注意点2:main方法要手动抛出IO异常 

throws IOException

1. 输入字符串

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main{//1.输入字符串public static void main(String[] args) throws IOException {//获取键盘一行的输入,以enter键为结束标志BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String s = reader.readLine();//s是最终得到的输入字符串}
}

补充:如果不知道输入有多少行,需要加一条判断语句

String str;
while(!(str = reader.readLine()).equals("")){//如果不为空,才进行下述操作......
}

2.输入数字或数组

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main{//2.输入数字或数组public static void main(String[] args) throws IOException {//获取键盘一行的输入,以enter键为结束标志BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] s = reader.readLine().split(" "); //用空格分割,也可以用逗号分割//转化为int数组int[] arr = new int[s.length];for(int i = 0; i < s.length; i++){arr[i] = Integer.parseInt(s[i]);}//arr是最终得到的int型数组}
}

3.输入单链表

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main{//3.输入链表public static void main(String[] args) throws IOException {//获取键盘一行的输入,以enter键为结束标志BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] s = reader.readLine().split(" "); //用空格分割,也可以用逗号分割//创建链表,并赋值LinkNode head = new LinkNode(0);LinkNode index = head;for(int i = 0; i < s.length; i++){int val_i = Integer.parseInt(s[i]);index.next = new LinkNode(val_i);index = index.next;}index.next = null;head = head.next;//head是最终得到的链表头节点}//辅助类:构建一个节点类,用于链表构建static class LinkNode {int val;LinkNode next;public LinkNode(int val){this.val = val;}}
}

4.输入二叉树

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main{//4.输入二叉树public static void main(String[] args) throws IOException {//获取键盘一行的输入,以enter键为结束标志BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String[] s = reader.readLine().split(" "); //用空格分割,也可以用逗号分割//用数组按层级遍历顺序存储二叉树的节点TreeNode[] tree = new TreeNode[s.length];for(int i = 0; i < tree.length; i++){int val_i = Integer.parseInt(s[i]);if(val_i == -1){tree[i] = null; //-1代表null}else{tree[i] = new TreeNode(val_i); }}//再遍历一边,给左右子树赋值for(int i = 0; i * 2 + 2 < tree.length; i++){if(tree[i] != null){tree[i].left = tree[i * 2 + 1];tree[i].right = tree[i * 2 + 2];}}TreeNode root = tree[0];//root是最终得到的二叉树根节点}//辅助类:构造树需要的结点类static class TreeNode {int val;TreeNode left, right;public TreeNode(int val) {this.val = val;}}
}

二.用Scanner进行输入

提供的方法有:

  • next(): // 读取一个字符串;
  • nextInt(): // 将读取的字符串转换成int类型的整数;
  • nextFloat(): // 将读取的字符串转换成float型;
  • nextBoolean(): //将读取的字符串转换成boolean型;
  • nextLine(): // 读取一整行数据,返回字符串

1.输入数字

import java.util.Scanner;public class Main{//1.输入数字public static void main(String[] args) {//获取键盘的单个字节输入,以空格,enter,tab为结束标志Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();//求两数之和int sum = a + b;//输出System.out.print(sum);}
}

补充:如果不知道输入有多少行,需要加一条判断语句

import java.util.Scanner;public class Main{//1.输入数字public static void main(String[] args) {//获取键盘的单个字节输入,以空格,enter,tab为结束标志Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){int a = scanner.nextInt();//输出System.out.print(a);}}
}

其他方法同上,可以自行实现......

总结:

1.BufferedReader 的读取速度比 Scanner 快

2.Scanner 的 nextLine() 方法有时候会出现吞回车现象

综上所述,推荐优先使用BufferedReader。

牛客网笔试系统ACM模式下的程序输入格式总结相关推荐

  1. 牛客网java_牛客网笔试Java输入输出救命模版

    被牛客网笔试输入输出坑过的看过来吧! 系统给你的输入文本是这样的,第一行两个数字是 矩阵的 行数 列数,第二行是矩阵搜索起点的坐标,剩下的行是矩阵里面的内容.如果是两个test case 就是这样的文 ...

  2. 2021 牛客网笔试总结 01

    文章目录 牛客网笔试 关于TCP/IP网络接口层的描述是错误的 TCP与UDP说法错误的 async await描述错误的 不属于Location对象的属性 BFC js错误类型 flex布局 fle ...

  3. 【牛客网笔试整理】美团点评 笔试整理

    链接:https://www.nowcoder.com/questionTerminal/29d1622d47514670a85e98a1f47b8e2d 来源:牛客网 已知一种新的火星文的单词由英文 ...

  4. 牛客网笔试真题 2021 阿里巴巴编程题(4星)题解(1-5)

    2021阿里巴巴校招笔试真题_Java工程师.C++工程师_牛客网 1.小强现在有n个物品,每个物品有x,y两种属性和.他想要从中挑出尽可能多的物品满足以下条件:对于任意两个物品 i 和 j ,满足( ...

  5. 【2020牛客网笔试整理】小红书笔试题

    薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 "<"和其他字符. 2.其他字符表示笔记内容 ...

  6. 【牛客网笔试】:Python实现:将i am a student转换成 student. a am i

    Q: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,"stud ...

  7. 牛客网笔试输入输出总结<记录自己踩的坑>

    1.对于那种只需要写一个方法的题目,只要注意方法中参数的类型和返回值类型即可 2.对于需要自己考虑输入和输出的题目,自己主要遇到过以下几种情况,并自己尝试了进行读取 首先不会改变的是以下几段代码 im ...

  8. 牛客网数字化招聘解决方案,支持10万人同时在线笔试

    与社招不同,学生求职热情极高,规模大.人数多是校园招聘工作中的重点和难点.作为大学生求职垂直平台,牛客网在2021年春招期间,PC端官网的每天平均浏览量达240万. 图源:<2021牛客网春招数 ...

  9. 牛客网刷算法题的输入输出(C++)

    内容简述 该篇文章将对牛客网刷题中关于输入输出的一些问题作一个总结.每年互联网公司的招聘都必不可少会有算法题,因此平时很多人都会去一些刷题网站进行刷题来学习.这里面用的比较多的刷题网站是leetcod ...

最新文章

  1. 百度股价一跌再跌,网友叹息:李彦宏没有狼性,缺乏战略眼光?
  2. HAProxy 的负载均衡服务器,Redis 的缓存服务器
  3. AI将给教育带来巨变,但学校和老师的价值不可替代
  4. python 关闭窗口事件_关于python:如何在Tkinter中处理窗口关闭事件?
  5. 单片机c语言 外部中断,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  6. 多人姿态识别框架——AlphaPose
  7. 实现机器学习的循序渐进指南V——支持向量机
  8. 你离黑客的距离,就差这 20 个神器了 | 原力计划
  9. html5 圆形加载进度条,纯css3超酷圆形Loading加载进度条特效
  10. 【比赛】NOIP2017 列队
  11. 从命令行安装IIS 7.0
  12. 内码输入法手机版下载_内码输入法
  13. TypeScript
  14. 玩客云刷armbian安装php环境_【2020.1.28】玩客云刷Armbian的那些坑
  15. android 获取视频的封面
  16. 南农计算机考研真题,南京农业大学考研真题汇总
  17. 【Python数据分析与可视化】Pandas统计分析-实训
  18. 揭秘诈骗团伙通过裸聊软件实施敲诈勒索
  19. java小程序体重监测,分享个可以记录体重的小程序,坚持才能瘦
  20. 飞控中加速度计数据fft分析

热门文章

  1. Qt 加载了qm文件翻译无效的bug的分享
  2. 遥感学报(湖泊遥感专刊)投稿历程
  3. php为什么被叫做拍黄片 故事起因
  4. js实现好看的图案 加勒比海盗(php拍黄片)
  5. 反编译小程序得到源代码
  6. HTML5-iframe-frameset
  7. Python 实现人机大战猜数字
  8. android 添加系统日历事件,添加系统日历事件
  9. Cognos安装配置--单机环境
  10. 基于C++的Huffman赫夫曼编译码器开发 课程论文+项目源码及可执行exe文件