边学边记——Java中的输入输出
目录
一.定义
1.输入(Input)输出(Output)—— IO 流
- 输入流:以电脑为参考系,从外部向程序或电脑中输入一个数据,称之为输入流。
- 输出流:以电脑/程序向外输出一个数据,称之为输出流。
2.系统输入输出 —— 标准输入输出
- 标准输出——显示器System.out 这是Java中的标准输出对象。
- 标准输入——键盘System.in这是Java默认的。
默认输出是输出到控制台。
二.常用的输出方法
1.println()
() 中传递任意数据类型,多个类型使用 “+” 拼接,输出内容后自带换行符。
PS:如果println()中啥也不写,默认当换行输出使用。
快捷用法:sout
2.print()
() 中任意数据类型,多个类型使用 “+” 拼接。
与println() 的区别:
- 输出后不带换行。
- 必须要在 () 中传递参数。
3.printf()
和c语言一样的格式化输出。
%c | 单个字符 |
%d | 十进制整数 |
%f | 十进制浮点数 |
%o | 八进制数 |
%s | 字符串 |
%u | 无符号十进制数 |
%x | 十六进制数 |
%% | 输出百分号% |
4.格式化输出
使用String.format()格式化。
三.从键盘中读取一个内容——使用Scanner类
最原始的系统输入,是非常难操作的。
1.使用流程
(1).产生一个系统输入的对象
//获取输入流对象Scanner scanner=new Scanner(System.in);
(2).从键盘中获取一个数据
nextXXX()表示获取的数据类型。
//输入整型数据int a=scanner.nextInt();//输入字符串String str=scanner.nextLine();//输入浮点数double d=scanner.nextDouble();
2.可能出现场景及问题
(1).输入字符串自动跳过
我们知道,输入整型数据时,按下回车代表数据输入完毕,输入字符串时,会以换行符来作为当前内容的终止条件。
那么,如果我们紧接着输入整型数据后就要输入字符串,那么就会自动跳过输入字符串(输入字符串识别到了换行符认为输入结束)。
有以下两种解决办法:
- 最先进行字符串的输入。
- 多使用一次nextLine()吃掉这个换行符。
import java.util.Scanner;public class Input { public static void main(String[] args) { //获取输入流对象 Scanner scanner=new Scanner(System.in); //最先进行字符串的输入// System.out.println("请输入姓名:");// String name=scanner.nextLine();// System.out.println("请输入年龄:");// int age=scanner.nextInt(); //多使用一次nextLine()吃掉这个换行符 System.out.println("请输入年龄:"); int age=scanner.nextInt(); scanner.nextLine(); System.out.println("请输入姓名:"); String name=scanner.nextLine(); System.out.println("请输入薪资:"); double money=scanner.nextDouble(); System.out.println("姓名为:"+name+" 年龄为:"+age+" 薪资为:"+money); }}
(2).循环读入数据
需要搭配 while(不知道循环次数,知道循环的中止条件),调用Scanner对象的 hasNextXXX() 方法,就会判断系统输入的是否是指定类型的内容,若碰到不是相应的类型数据,循环终止(字符串需要输入特殊字符终止)。
eg:
以整数为例:
int num=0;//整数个数int sum=0;//求和while(scanner.hasNextInt()){ int tmp=scanner.nextInt(); sum+=tmp; num++;}System.out.println("sum="+sum);
如有建议或想法,欢迎一起交流讨论~
来源地址:https://blog.csdn.net/lil_ghost_/article/details/126402588
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341