Java流程控制——1.输入与输出
Java输入与输出操作详解
输出操作:向用户展示信息
Java中最基础的输出方式是通过System.out对象,它提供了多种方法来满足不同的输出需求。
基本输出方法
println():输出内容并换行print():输出内容但不换行printf():格式化输出
示例代码:
// 基本输出示例
public class OutputExample {
public static void main(String[] args) {
System.out.println("这是println输出,会自动换行");
System.out.print("这是print输出,");
System.out.print("不会自动换行\n"); // 需要手动添加换行符
}
}
运行结果:
这是println输出,会自动换行
这是print输出,不会自动换行
格式化输出详解
printf()方法支持格式化字符串,通过占位符可以将各种数据类型按照指定格式输出,语法为:
System.out.printf(格式化字符串, 参数1, 参数2, ...);
常用占位符及其说明:
| 占位符 | 说明 | 示例 |
|---|---|---|
%d |
格式化整数 | System.out.printf("%d", 123) → 123 |
%x |
格式化十六进制整数 | System.out.printf("%x", 255) → ff |
%f |
格式化浮点数 | System.out.printf("%.2f", 3.1415) → 3.14 |
%e |
科学计数法表示浮点数 | System.out.printf("%e", 12345) → 1.234500e+04 |
%s |
格式化字符串 | System.out.printf("Hello, %s", "Java") → Hello, Java |
格式化输出的高级用法:
// 控制宽度和对齐
System.out.printf("%10d\n", 123); // 占10位宽度,右对齐
System.out.printf("%-10d\n", 123); // 占10位宽度,左对齐
// 数字补零
System.out.printf("%08d\n", 123); // 不足8位用0补足
System.out.printf("%04x\n", 15); // 十六进制补零,结果为000f
// 显示百分比
System.out.printf("%.2f%%\n", 25.5); // 输出25.50%(%%表示一个%)
输入操作:获取用户输入
与输出相比,Java的输入处理相对复杂,通常使用Scanner类来简化输入操作。
使用Scanner处理输入
步骤如下:
- 导入Scanner类:在代码开头添加
import java.util.Scanner; - 创建Scanner对象:
Scanner scanner = new Scanner(System.in); - 读取输入:使用Scanner的方法读取不同类型的输入
- 关闭Scanner:
scanner.close();(可选,推荐在使用完毕后关闭)
基本示例:
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 读取字符串
System.out.print("请输入姓名:");
String name = scanner.nextLine();
// 读取整数
System.out.print("请输入年龄:");
int age = scanner.nextInt();
// 读取浮点数
System.out.print("请输入身高(米):");
double height = scanner.nextDouble();
// 输出结果
System.out.printf("姓名:%s,年龄:%d,身高:%.2f米\n", name, age, height);
// 关闭Scanner
scanner.close();
}
}
Scanner常用方法
| 方法 | 说明 |
|---|---|
nextLine() |
读取一整行字符串(包括空格) |
next() |
读取一个单词(以空格为分隔符) |
nextInt() |
读取整数 |
nextDouble() |
读取双精度浮点数 |
nextBoolean() |
读取布尔值 |
hasNextXXX() |
判断是否还有对应类型的输入 |
输入操作的注意事项
输入类型匹配:如果输入的数据类型与预期不符(如用
nextInt()读取字母),会抛出InputMismatchException处理换行符问题:
nextInt()、nextDouble()等方法不会消耗换行符,可能影响后续的nextLine():Scanner sc = new Scanner(System.in);
System.out.print("请输入年龄:");
int age = sc.nextInt();
sc.nextLine(); // 消耗掉剩余的换行符
System.out.print("请输入地址:");
String address = sc.nextLine(); // 此时能正确读取
输入验证:使用
hasNextXXX()方法可以在读取前验证输入:System.out.print("请输入一个数字:");
if (scanner.hasNextInt()) {
int num = scanner.nextInt();
System.out.println("你输入的是:" + num);
} else {
System.out.println("输入的不是有效整数");
}
综合示例
下面是一个综合运用输入输出的示例程序,计算两个考试成绩的提高百分比:
import java.util.Scanner;
public class ScoreImprovement {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入上次成绩
System.out.print("请输入上次考试成绩:");
int lastScore = scanner.nextInt();
// 输入本次成绩
System.out.print("请输入本次考试成绩:");
int currentScore = scanner.nextInt();
// 计算提高百分比
double improvement = (currentScore - lastScore) * 100.0 / lastScore;
// 格式化输出结果
System.out.printf("成绩提高了:%.2f%%\n", improvement);
scanner.close();
}
}
运行示例:
请输入上次考试成绩:80
请输入本次考试成绩:92
成绩提高了:15.00%
总结
- 输出操作主要通过
System.out的print()、println()和printf()方法 - 掌握
printf()常见的格式化选项 - 掌握
Scanner常用方法 - 留意使用
Scanner时输入类型匹配和换行符处理问题
Java流程控制——1.输入与输出的更多相关文章
- 042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用——循环输出英文字母
042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用--循环输出英文字母 本文知识点:案例演示while循环的使用2 ...
- JAVA流程控制
JAVA流程控制 example1: --输出九九乘法表 public class chengfabiao { public static void main (String[] args){ ...
- Java学习笔记之:Java流程控制
一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...
- Java流程控制练习--万年历
Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...
- 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结
038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...
- Java流程控制与Scanner类的使用
Java流程控制与Scanner类的使用 Scanner类 Scanner类可以使程序接受键盘输入,实现人机交互 一个完整的Scanner的使用例子: //创建一个扫描器对象,用于接收键盘数据 Sca ...
- Java核心基础第3篇-Java流程控制
Java流程控制 本章一起来探讨下Java的流程控制语句.主要从以下几个方面展开: Java分支语句 Java循环语句 Java其实和其他任何的开发语言一样,分支语句和循环语句是必不可少的,有个这两个 ...
- 第4天 JavaDoc生成文档&Java流程控制(第一节:用户交互Scanner)
JavaDoc生成文档 javadoc命令是用来生成自己的API文档 参数信息: @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @ ...
- 4. Java流程控制
4.Java流程控制 4.1.用户交互Scanner 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入.java.util.Scann ...
- Java学习笔记(二)java流程控制
学习笔记2 Java流程控制 这次也是跟着[狂神说Java]Java零基础学习视频通俗易懂继续学习的,持续学习,你我共勉. 一. 用户交互Scanner 1. Scanner对象 之前学的基本语法没有 ...
随机推荐
- Linux vmstat命令快速入门
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入 ...
- Linux服务器(CentOS/Ubuntu)接口Bond模式详解、配置指南及交换机对应接口的配置示例
以下是关于Linux服务器(CentOS/Ubuntu)与交换机对接的接口Bond模式详解.配置指南及交换机配置示例(思科/华为/华三) 的全面说明: 一.Linux Bonding 模式对比 模式 ...
- 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南
技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担. 软件工程师 Ward Cunningham首次将技术的复杂 ...
- 【转载】Indexer 源码分析
Indexer 源码分析 介绍 我们知道DeltaFIFO 中的元素通过 Pop 函数弹出后,在指定的回调函数中将元素添加到了 Indexer 中. Indexer 是什么?字面意思是索引器,它就是 ...
- MinHook 如何对.NET底层的 Win32函数 进行拦截(上)
一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函 ...
- IPMI新建BMC管理用户
# 查看ipmi的ip [root@HOST-10-198-2-62 ~]# ipmitool lan print # 首先确认非admin用户的id,选择一个ID创建root用户 [root@HOS ...
- 数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级
4月20日,袋鼠云成功举行了以"数实融合,韧性生长"为主题的2023春季生长大会.会上,袋鼠云自主研发的一站式大数据基础软件--数栈V6.0产品矩阵全新发布.对旗下大数据基础平台. ...
- 专家分享——CAE仿真软件学习心得
随着科技的发展和工程设计的复杂性增加,计算机辅助工程(CAE)仿真软件成为了现代工程师不可或缺的工具.作为一名工程师,我有幸接触到了HyperWorks这一强大的CAE仿真软件,并从中获得了许多宝贵的 ...
- 使用Lean4进行形式化建模(以Java线程池为例)
前言 前段时间,我们处理了一则Java线程池配置不当导致的线上问题(参见 好端端的线程池,怎么就卡死了?),本文将以此为案例,使用形式化语言,从数学角度进行证明. 形式化证明简介 首先需要搞清楚一个概 ...
- 别再被 Spring Security 和 Shiro 劝退了!这款国产 Java 权限框架真香!
Hello,大家好,我是程序员NEO. 在 Java 开发中,权限认证是个绕不开的话题.但一提起 Spring Security 或 Shiro,很多人是不是瞬间就头大了?复杂的配置.陡峭的学习曲线, ...