当前位置: 首页 > ai >正文

JavaSE:学习输入输出编写简单的程序

一、打印输出到屏幕

Java提供了三种核心输出方法,适合不同场景:

System.out.println()

  • 打印内容后 自动换行
System.out.println("Welcome"); 
System.out.println("to ISS"); 
// 输出:
// Welcome
// to ISS

System.out.print()

  • 打印内容后 不换行 (光标停留在末尾)
System.out.print("Welcome "); 
System.out.print("to ISS"); 
// 输出:Welcome to ISS

System.out.printf()

  • 格式化输出 (类似C语言的printf
String name = "Alice";
int age = 25;
double height = 1.68;
System.out.printf("Name: %s | Age: %d | Height: %.2f m%n", name, age, height);
// 输出:Name: Alice | Age: 25 | Height: 1.68 m
  • 格式说明符:
    • %s:字符串
    • %d:整数
    • %f:浮点数(%.2f保留两位小数)
    • %n:换行符

二、字符串拼接与转义字符

字符串拼接

+ 连接变量与文本:

double price = 9.99;
System.out.println("Price: $" + price); // 输出:Price: $9.99

转义字符

特殊字符需用反斜杠\转义:

序列作用示例
\n换行"Line1\nLine2"
\t制表符"Name:\tAlice"
\"双引号"He said \"Hi\""
\\反斜杠本身"Path: C:\\Users"

三、数字格式化(DecimalFormat)

精确控制数字显示格式:

import java.text.DecimalFormat;double value = 6543.21;// 示例1:保留1位小数(自动四舍五入)
DecimalFormat df1 = new DecimalFormat("#.#");
System.out.println(df1.format(value)); // 输出:6543.2// 示例2:千位分隔符+两位小数
DecimalFormat df2 = new DecimalFormat("#,##0.00");
System.out.println(df2.format(value)); // 输出:6,543.21// 示例3:固定位数(不足补0)
DecimalFormat df3 = new DecimalFormat("000000.000");
System.out.println(df3.format(42.5)); // 输出:000042.500

符号说明 :

  • #:可选数字位(不显示无效0)
  • 0:强制数字位(不足补0)
  • ,:千位分隔符

四、读取用户输入(Scanner)

通过Scanner类获取键盘输入:

import java.util.Scanner;Scanner scanner = new Scanner(System.in); // 创建Scanner对象System.out.print("Enter your name: ");
String name = scanner.nextLine();        // 读取整行文本System.out.print("Enter your age: ");
int age = scanner.nextInt();             // 读取整数System.out.print("Enter salary: ");
double salary = scanner.nextDouble();    // 读取浮点数scanner.close();                         // 关闭Scanner释放资源System.out.printf("Hello %s! You are %d and earn $%.2f", name, age, salary);

注意事项 :

  • nextLine() 会读取空格和换行,而 nextInt()/nextDouble() 遇到空格即停止
  • 混合输入时,建议先用 nextLine() 读取换行符避免冲突
  • 读取后务必调用 scanner.close()

五、日期时间处理(Java 8+)

import java.time.*;
import java.time.format.DateTimeFormatter;// 获取当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("原始格式: " + now); // 输出:2025-07-24T23:22:22.123// 自定义格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");
String formatted = now.format(formatter);
System.out.println("格式化后: " + formatted); // 输出:24/07/2025 23:22:22

常用类 :

  • LocalDate:仅日期(年月日)
  • LocalTime:仅时间(时分秒)
  • LocalDateTime:日期+时间

六、重点总结

功能核心方法/类使用场景
基础打印System.out.println()快速输出内容并换行
格式化输出System.out.printf()控制数字/字符串对齐和精度
数字格式化DecimalFormat显示千位分隔符/固定小数位
用户输入Scanner + nextXxx()读取键盘输入的各类数据
日期处理LocalDateTime + DateTimeFormatter日期计算和格式化显示

七、练习

Java新手编程练习:掌握基础输入输出


题目1:打印姓名和邮箱

编写程序,按指定格式输出姓名和邮箱:

John Smith  
e0011223@u.nus.edu  
解题代码
public class Exercise1 {  public static void main(String[] args) {  System.out.println("John Smith");  System.out.println("e0011223@u.nus.edu");  }  
}  

解析

  • 使用两个System.out.println()分别打印两行内容
  • println()在输出后自动添加换行符,确保姓名和邮箱分行显示
  • 可直接替换引号内字符串为实际信息

题目2:个性化问候语

编写程序,接收用户输入的姓名,输出问候语:

Good Morning [姓名]
解题代码
import java.util.Scanner;  public class Exercise2 {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("Enter your name: ");  String name = scanner.nextLine();  System.out.println("Good Morning " + name);  scanner.close();  }  
}  

解析

  1. 导入Scanner类处理输入
  2. scanner.nextLine()读取整行文本(包括空格)
  3. 字符串拼接操作"Good Morning " + name组合问候语
  4. 必须调用scanner.close()释放资源

️题目3:整数平方计算

输入一个整数,输出其平方值:

输入:5  
输出:25
解题代码
import java.util.Scanner;  public class Exercise3 {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("Enter an integer: ");  int num = scanner.nextInt();  int square = num * num;  System.out.println("Square: " + square);  scanner.close();  }  
}  

解析

  • nextInt()专用于读取整数输入
  • 使用num * num直接计算平方(比Math.pow()更高效)
  • 整数运算不会产生浮点数精度问题

题目4:浮点数平方计算

输入双精度浮点数,输出其平方值:

输入:2.5  
输出:6.25
解题代码
import java.util.Scanner;  public class Exercise4 {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("Enter a number: ");  double num = scanner.nextDouble();  double square = num * num;  System.out.println("Square: " + square);  scanner.close();  }  
}  

解析

  • nextDouble()读取双精度浮点数
  • 浮点数乘法可能产生精度问题(如0.1 * 0.1 = 0.010000000000000002
  • 商业计算建议使用BigDecimal

题目5:金额格式化

输入双精度数,输出保留两位小数(自动四舍五入):

输入:4.555 → 输出:4.56  
输入:3.232 → 输出:3.23
解题代码
import java.text.DecimalFormat;  
import java.util.Scanner;  public class Exercise5 {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("Enter a number: ");  double num = scanner.nextDouble();  DecimalFormat df = new DecimalFormat("0.00");  String formatted = df.format(num);  System.out.println("Formatted: " + formatted);  scanner.close();  }  
}  

解析

  1. DecimalFormat使用模式字符串控制格式

  2. "0.00"
    

    表示:

    • 至少1位整数(不足补0)
    • 固定2位小数(不足补0,超位四舍五入)
  3. 模式改为"#.##"可隐藏整数部分的无效0

http://www.xdnf.cn/news/16087.html

相关文章:

  • list 介绍 及 底层
  • ESP32使用 vscode IDF 创建项目到烧录运行全过程
  • Flink-1.19.0源码详解8-ExecutionGraph生成-前篇
  • RabbitMQ简述
  • vue3 el-table 列数据合计
  • 在一个网页浏览器的控制台测试后端java是否支持SSE服务
  • Vulnhub Matrix-Breakout-2-Morpheus靶机攻略
  • 基于规则架构风格对业务的重构
  • 每日算法刷题Day52:7.24:leetcode 栈5道题,用时1h35min
  • RPG64.制作敌人攻击波数四:优化
  • 让复杂 AI 应用构建就像搭积木:Spring AI Alibaba Graph 使用指南与源码解读
  • 企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构
  • es0102---语法格式、数据类型、整合springboot、创建库、创建映射、新增数据、自定义查询
  • 【Qt开发】信号与槽(一)
  • node.js中的fs与path模块
  • 主流摄像头协议及其开源情况,GB/T 28181协议介绍
  • 云原生MySQL Operator开发实战(一):Operator基础与CRD设计
  • [语言模型训练]基于 PyTorch 的双向 LSTM 文本分类器实现:基于旅店的评论分类语言模型
  • Java_多线程_生产者消费者模型_互斥锁,阻塞队列
  • Java与NLP实战:文本处理到情感分析全解析
  • Ethereum: 从 1e+21 到千枚以太币:解密 Geth 控制台的余额查询
  • 适配器模式——以springboot为例
  • 《云计算蓝皮书 2025 》发布:云计算加速成为智能时代核心引擎
  • MySQL--day13--视图存储过程与函数
  • 垃圾回收GC
  • 【AI News | 20250722】每日AI进展
  • Java应用程序内存占用分析
  • 什么是HTTP长连接、短连接?谁更能抗DoS攻击?
  • 【数据库】国产数据库的新机遇:电科金仓以融合技术同步全球竞争
  • Python进阶知识之pandas库