
输入输出1. 控制台输出3种核心方式System.out.println(内容)// 输出后自动换行System.out.print(内容)// 输出后不换行System.out.printf(格式,参数)// 格式化输出(和 C语言 printf 用法一致)示例System.out.println(Hello, Java);System.out.print(请输入: );System.out.printf(年龄: %d, 体重: %.1fkg,18,62.5);输出结果格式化输出常用的占位符占位符类型 / 作用示例输出%d十进制整数(“数字%d”, 100);数字100%x十六进制整数小写(“小写十六进制%x”, 255);小写十六进制ff%X十六进制整数大写(“大写十六进制%X”, 255);大写十六进制FF%f浮点数默认6位小数(“价格%.2f”, 9.9);价格9.90%s字符串(“姓名%s”, “张三”);姓名张三%c单个字符(“单个字符%c”, ‘A’)单个字符A%%输出百分号占位符(“当前进度75%%”);当前进度75%%b布尔值小写(“布尔结果%b”, 10 5);布尔结果true%B布尔值大写(“大写布尔%B”, 1 2);大写布尔FALSE%e科学计数法(“科学计数法%e”, 1234567.89);科学计数法1.234568e062. 控制台输入核心用Scanner类Java 控制台输入必须先导入java.util.Scanner工具类通过它读取用户输入的不同类型数据以下是语法importjava.util.Scanner;// 导入Scanner类// 创建Scanner对象, 绑定标准输入流(键盘)// Scanner 对象名 new Scanner(System.in);ScannerscannewScanner(System.in);// 具体所需的输入内容// 数据类型 变量名 对象名.输出类型();intagescan.nextInt();// 关闭输入调用, 释放系统输入资源// 对象名.close();scan.close();2.1 基础类型匹配以下是常用用法Scanner为每种基础数据类型提供了专属的读取方法输入内容必须符合对应类型的格式规范否则会抛出InputMismatchException异常目标数据类型对应读取方法intnextInt()doublenextDouble()booleannextBoolean()String 字符串next()String 整行文本nextLine()2.2 常用用法单组输入importjava.util.Scanner;// 导入Scanner类publicstaticvoidmain(String[]args){// 创建Scanner对象, 绑定标准输入流(键盘)ScannerscannewScanner(System.in);System.out.print(请输入姓名: );Stringnamescan.nextLine();// 读取一整行字符串(包含空格)System.out.print(请输入年龄: );intagescan.nextInt();// 读取整数System.out.print(请输入工资/月: );doublesalaryscan.nextDouble();// 读取浮点数// 输出结果System.out.printf(姓名: %s, 年龄: %d, 工资: %.1f%n,name,age,salary);scan.close();// 必须调用, 释放资源}输出结果多组输入如果需要批量读取数据用hasNextXxx()has对应读取类型方法判断是否还有输入采用while循环语句进行不断循环// 计算输入整数的和importjava.util.Scanner;publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);intsum0;intcount0;// 循环读取整数, 直到用户输入非整数或结束while(scanner.hasNextInt()){intnumscanner.nextInt();sumnum;count;}System.out.printf(共输入%d个数, 总和: %d%n,count,sum);scanner.close();}输出结果注意 连续输入 使用Ctrl z或者Ctrl d强制结束输入或者输入非 hasNextXxx()非 has对应读取类型结束输入2.3 常见的匹配错误nextInt()、nextDouble()这类数值读取方法只会读取数值本身不会把输入完数值后按下的回车换行符自动去掉如果接着调用nextLine()它会直接读取换行符为输入内容最终得到空字符串跳过预期的字符串输入步骤错误示例importjava.util.Scanner;publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);System.out.print(请输入您的年龄: );intagescanner.nextInt();System.out.print(请输入您的姓名: );Stringnamescanner.nextLine();// 这里直接读到换行符, name变成空字符串scanner.close();}输出结果解决方法再调用一次scanner.nextLine();即可importjava.util.Scanner;publicstaticvoidmain(String[]args){ScannerscannernewScanner(System.in);System.out.print(请输入您的年龄: );intagescanner.nextInt();// 读取回车scanner.nextLine();// 清空缓冲区的换行符System.out.print(请输入您的姓名: );Stringnamescanner.nextLine();// 现在可以正常读取带空格的 name 了scanner.close();}输出结果2.4 其他注意事项所有nextXxx()数值方法都会自动忽略输入前的空格、制表符只读取有效数值部分Scanner使用完毕后记得调用对象名.close()关闭释放系统输入资源养成良好的编码习惯