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处理输入

步骤如下:

  1. 导入Scanner类:在代码开头添加import java.util.Scanner;
  2. 创建Scanner对象Scanner scanner = new Scanner(System.in);
  3. 读取输入:使用Scanner的方法读取不同类型的输入
  4. 关闭Scannerscanner.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() 判断是否还有对应类型的输入

输入操作的注意事项

  1. 输入类型匹配:如果输入的数据类型与预期不符(如用nextInt()读取字母),会抛出InputMismatchException

  2. 处理换行符问题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(); // 此时能正确读取
  3. 输入验证:使用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.outprint()println()printf()方法
  • 掌握printf()常见的格式化选项
  • 掌握Scanner常用方法
  • 留意使用Scanner时输入类型匹配和换行符处理问题

Java流程控制——1.输入与输出的更多相关文章

  1. 042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用——循环输出英文字母

    042 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 04 案例演示while循环的使用--循环输出英文字母 本文知识点:案例演示while循环的使用2 ...

  2. JAVA流程控制

    JAVA流程控制 example1: --输出九九乘法表 public class chengfabiao { public static void main (String[] args){     ...

  3. Java学习笔记之:Java流程控制

    一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...

  4. Java流程控制练习--万年历

    Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...

  5. 038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结

    038 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 05 案例演示switch结构-星期的表示案例以及总结 本文知识点:案例演示switch结构并对sw ...

  6. Java流程控制与Scanner类的使用

    Java流程控制与Scanner类的使用 Scanner类 Scanner类可以使程序接受键盘输入,实现人机交互 一个完整的Scanner的使用例子: //创建一个扫描器对象,用于接收键盘数据 Sca ...

  7. Java核心基础第3篇-Java流程控制

    Java流程控制 本章一起来探讨下Java的流程控制语句.主要从以下几个方面展开: Java分支语句 Java循环语句 Java其实和其他任何的开发语言一样,分支语句和循环语句是必不可少的,有个这两个 ...

  8. 第4天 JavaDoc生成文档&Java流程控制(第一节:用户交互Scanner)

    JavaDoc生成文档 javadoc命令是用来生成自己的API文档 参数信息: @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @ ...

  9. 4. Java流程控制

    4.Java流程控制 4.1.用户交互Scanner 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入.java.util.Scann ...

  10. Java学习笔记(二)java流程控制

    学习笔记2 Java流程控制 这次也是跟着[狂神说Java]Java零基础学习视频通俗易懂继续学习的,持续学习,你我共勉. 一. 用户交互Scanner 1. Scanner对象 之前学的基本语法没有 ...

随机推荐

  1. Linux vmstat命令快速入门

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入 ...

  2. Linux服务器(CentOS/Ubuntu)接口Bond模式详解、配置指南及交换机对应接口的配置示例

    以下是关于Linux服务器(CentOS/Ubuntu)与交换机对接的接口Bond模式详解.配置指南及交换机配置示例(思科/华为/华三) 的全面说明: 一.Linux Bonding 模式对比 模式 ...

  3. 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南

    技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担. 软件工程师 Ward Cunningham首次将技术的复杂 ...

  4. 【转载】Indexer 源码分析

    Indexer 源码分析 介绍 我们知道DeltaFIFO 中的元素通过 Pop 函数弹出后,在指定的回调函数中将元素添加到了 Indexer 中. Indexer 是什么?字面意思是索引器,它就是 ...

  5. MinHook 如何对.NET底层的 Win32函数 进行拦截(上)

    一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函 ...

  6. IPMI新建BMC管理用户

    # 查看ipmi的ip [root@HOST-10-198-2-62 ~]# ipmitool lan print # 首先确认非admin用户的id,选择一个ID创建root用户 [root@HOS ...

  7. 数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级

    4月20日,袋鼠云成功举行了以"数实融合,韧性生长"为主题的2023春季生长大会.会上,袋鼠云自主研发的一站式大数据基础软件--数栈V6.0产品矩阵全新发布.对旗下大数据基础平台. ...

  8. 专家分享——CAE仿真软件学习心得

    随着科技的发展和工程设计的复杂性增加,计算机辅助工程(CAE)仿真软件成为了现代工程师不可或缺的工具.作为一名工程师,我有幸接触到了HyperWorks这一强大的CAE仿真软件,并从中获得了许多宝贵的 ...

  9. 使用Lean4进行形式化建模(以Java线程池为例)

    前言 前段时间,我们处理了一则Java线程池配置不当导致的线上问题(参见 好端端的线程池,怎么就卡死了?),本文将以此为案例,使用形式化语言,从数学角度进行证明. 形式化证明简介 首先需要搞清楚一个概 ...

  10. 别再被 Spring Security 和 Shiro 劝退了!这款国产 Java 权限框架真香!

    Hello,大家好,我是程序员NEO. 在 Java 开发中,权限认证是个绕不开的话题.但一提起 Spring Security 或 Shiro,很多人是不是瞬间就头大了?复杂的配置.陡峭的学习曲线, ...