跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 算法基础实战:输入输出与格式化控制详解

Java 算法基础练习涵盖输入输出处理、字符串格式化、进制转换及几何计算。通过 Scanner 类读取数据,利用 String.format 控制显示精度与对齐方式,掌握 Math 库进行幂运算和绝对值计算。内容包含多项式求值、整数逆序、圆面积周长等典型例题,适合初学者巩固语法与逻辑能力。

kaikai发布于 2026/3/29更新于 2026/7/1732 浏览
Java 算法基础实战:输入输出与格式化控制详解

Java 算法基础实战:输入输出与格式化控制详解

对于初学者而言,掌握基础的输入输出处理是编写算法程序的第一步。本文通过一系列典型例题,讲解如何使用 Scanner 类读取数据,以及利用 String.format 和 printf 进行精确的格式控制,涵盖整数、浮点数、进制转换及几何计算等常见场景。

1. 字符串宽度处理

当需要截取特定长度的字符串并按固定宽度输出时,可以使用 substring 配合 format 方法。

输入输出示例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String all = sc.next();
        // 按每 3 位分割并转换为整数输出
        System.out.println(String.format("%d %d %d",
            Integer.parseInt(all.substring(0, 3)),
            Integer.parseInt(all.substring(3, 6)),
            Integer.parseInt(all.substring(6, 9))));
        sc.close();
    }
}

2. 字符串占位与对齐

使用 %s 格式符可以控制字符串输出的列宽和对齐方式。注意 next() 遇到空格会停止,而 nextLine() 直到换行才停止。

输入输出示例

import java.util.Scanner;

   {
        {
            (System.in);
           sc.nextLine();
        
        System.out.println(String.format(, c.substring(, )));
    }
}
public
class
Main
public
static
void
main
(String[] args)
Scanner
sc
=
new
Scanner
String
c
=
// 输出前 3 个字符,右对齐占 6 列
"%6s"
0
3

3. 浮点数精度控制

%f 用于实数输出,可以通过 .2f 或 .3f 指定小数位数,并在前面加数字指定最小列宽。

输入输出示例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();
        // 默认精度,保留 2 位,保留 3 位且最小宽度 8
        System.out.println(String.format("%f", a) + " " +
                           String.format("%.2f", a) + " " +
                           String.format("%8.3f", a));
    }
}

4. 小数与指数形式

在科学计数法中,可以使用 e 格式符。注意 printf 和 String.format 的使用区别,以及数值量级对指数的影响。

public class Main {
    public static void main(String[] args) {
        double n = 3.1415926;
        double m = 12345678.123456789;
        // 输出小数形式和指数形式
        System.out.printf("%.6f %.6fe+000\n", n, n);
        // 调整量级以显示正确的指数
        System.out.printf("%.6f %.6fe+007", m, m / 10000000);
    }
}

5. 进制转换

Java 支持十进制、八进制和十六进制的直接输出。%o 对应八进制,%X 对应十六进制大写字母。

输入输出示例

public class Main {
    public static void main(String[] args) {
        int a = 202, b = 117, c = 70, d = 130;
        // 十进制,八进制 (前缀 0),十六进制 (前缀 0X)
        System.out.printf("%d 0%o 0X%X\n", a, a, a);
        System.out.printf("%d 0%o 0X%X\n", b, b, b);
        System.out.printf("%d 0%o 0X%X\n", c, c, c);
        System.out.printf("%d 0%o 0X%X\n", d, d, d);
    }
}

6. 数字合并

将百位、十位、个位组合成完整数字,可以直接拼接字符串后转换,或者通过数学运算累加。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取一行并去除空格,转为整数
        String c = sc.nextLine().replace(" ", "");
        System.out.println(Integer.valueOf(c));
        sc.close();
    }
}

7. 整数逆序

实现数字逆序有两种常见思路:一种是数学取模除法,另一种是利用 StringBuilder 反转字符串。后者在处理非数字字符或简单逻辑时更直观。

输入输出示例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 使用 StringBuilder 快速反转
        StringBuilder sb = new StringBuilder(str);
        System.out.println(sb.reverse());
        sc.close();
    }
}

8. 多项式计算

涉及幂运算时,Math.pow() 返回 double 类型,若需整数结果需强制转换。注意运算顺序和精度问题。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        // 计算多项式值,强转 int 避免小数
        System.out.println((int)(Math.pow(x, 6) + 3 * Math.pow(x, 4) -
                2 * Math.pow(x, 5) - 5 * Math.pow(x, 2) + 6 * x + 7));
    }
}

9. 和的立方

简单的代数运算,直接计算 (x+y)^3 即可。实际开发中需注意溢出风险,但在基础练习中通常忽略。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        System.out.println((x + y) * (x + y) * (x + y));
    }
}

10. 绝对值计算

Math.abs() 可处理整数和浮点数的绝对值。输出时建议统一格式化,保持结果一致性。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();
        System.out.println(String.format("%.6f", Math.abs(a)));
    }
}

11. 圆面积和周长

几何计算的基础题。PI 取值需根据题目要求,此处使用高精度常量。注意变量命名规范。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double r = sc.nextDouble();
        double PI = 3.1415926;
        double circumference = 2 * PI * r;
        double area = PI * r * r;
        System.out.println("Area=" + String.format("%.6f", area));
        System.out.println("Circumference=" + String.format("%.6f", circumference));
    }
}

12. 矩形面积和周长

与圆类似,矩形计算更直接。重点在于输入两个维度并应用公式。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double x = sc.nextDouble();
        double y = sc.nextDouble();
        double area = x * y;
        double perimeter = 2 * (x + y);
        System.out.println("Area=" + String.format("%.6f", area));
        System.out.println("Perimeter=" + String.format("%.6f", perimeter));
    }
}

13. 椭圆面积计算

椭圆面积公式为 πab。输入长半轴和短半轴,套用公式即可。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a = sc.nextDouble();
        double b = sc.nextDouble();
        double PI = 3.1415926;
        double area = PI * a * b;
        System.out.println("Area" + " " + "=" + " " + String.format("%.6f", area));
    }
}

以上涵盖了 Java 基础语法在算法题中的常见用法。熟练掌握这些输入输出和格式化技巧,能为后续学习复杂数据结构打下坚实基础。

目录

  1. Java 算法基础实战:输入输出与格式化控制详解
  2. 1. 字符串宽度处理
  3. 2. 字符串占位与对齐
  4. 3. 浮点数精度控制
  5. 4. 小数与指数形式
  6. 5. 进制转换
  7. 6. 数字合并
  8. 7. 整数逆序
  9. 8. 多项式计算
  10. 9. 和的立方
  11. 10. 绝对值计算
  12. 11. 圆面积和周长
  13. 12. 矩形面积和周长
  14. 13. 椭圆面积计算
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • nanobot 轻量级 AI Agent 框架搭建 QQ 机器人实践与开源贡献
  • Linux 下 OpenClaw 安装、初始化及 Web UI 配置指南
  • 前端请求后端 404/405/500 状态码排查与解决指南
  • 2024 中国 AI 大模型场景探索与应用趋势深度解析
  • FPGA DDR4 读写:MIG IP 核控制信号详解
  • 基于 AI 设计技能的独立前端开发全流程实战
  • C++ 输入输出机制剖析:标准流、文件操作与性能调优
  • Linux 信号入门:进程通信机制与实战应用
  • 零基础学习网络安全指南:核心方向与入门路径
  • C++ 前缀和详解:基础题解与思维分析
  • 鸿蒙(HarmonyOS)应用开发学习路线图与核心资料指南
  • 毕业论文写作困境分析与智能辅助工具应用
  • 告别 Vibe Coding:BMAD 方法论与全能 AI 团队入门
  • ClawdBot 本地 AI 助理完整安装与配置指南
  • STL 容器适配器:stack 与 queue 底层模拟及算法实践
  • OpenClaw 飞书机器人权限配置与安全指南
  • Java 开发者转型 AI 大模型应用开发的学习路径与实战指南
  • OpenClaw 实战:用 IDENTITY.md 打造专业 AI 角色
  • 搭建一个基于 Django 框架的 WebApi 项目
  • 基于 Composition API 和 Custom Hook 实现前端权限控制

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online