java 基础调试技巧与控制台输入输出

createh522小时前技术教程1

一、基础调试技巧(IntelliJ IDEA为例)

1.1 断点设置与基本调试

public class DebugDemo {
    public static void main(String[] args) {
        int a = 5;
        int b = 3;                      // 在此行左侧点击设置断点
        int sum = add(a, b);
        System.out.println("结果:" + sum);
    }

    public static int add(int x, int y) {
        int result = x + y;             // 方法内设置断点
        return result;
    }
}

调试步骤

  1. 点击行号左侧设置断点(红色圆点)
  2. 右键选择 Debug 'DebugDemo.main()'
  3. 使用调试工具栏:F8 : 单步执行(Step Over)F7 : 进入方法(Step Into)F9 : 跳到下一个断点Alt+F9 : 运行到光标处

1.2 变量观察技巧

  • 查看变量:在Variables窗口实时查看变量值鼠标悬停变量显示当前值
  • 修改变量
int count = 0; // 调试时右键变量选择"Set Value"(可修改为任意值)

1.3 条件断点(高级功能)

java
for (int i = 0; i < 10; i++) {
    System.out.println(i);  // 右键断点设置条件i>5
}

设置方法:右键断点 → 输入条件 i > 5


二、控制台输出

2.1 基础输出方法

System.out.println("Hello World");  // 换行输出
System.out.print("不换行输出");       // 不换行
System.out.printf("PI=%.2f", 3.1415); // 格式化输出 → "PI=3.14"

2.2 格式化输出详解

格式符

说明

示例

%s

字符串

printf("Name: %s", "Tom")

%d

十进制整数

printf("Age: %d", 25)

%f

浮点数

printf("Price: %.2f", 9.9)

%n

换行符

printf("Line1%nLine2")

示例

String product = "手机";
double price = 2999.99;
int stock = 50;

System.out.printf("商品:%s%n价格:yen%.2f%n库存:%d件", 
                 product, price, stock);

输出

商品:手机
价格:yen2999.99
库存:50件

三、控制台输入

3.1 使用Scanner类

import java.util.Scanner;

public class InputDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入姓名:");
        String name = scanner.nextLine();
        
        System.out.print("请输入年龄:");
        int age = scanner.nextInt();
        
        System.out.printf("你好%s,你今年%d岁", name, age);
        scanner.close(); // 关闭扫描器
    }
}

3.2 处理混合输入问题

Scanner scanner = new Scanner(System.in);

System.out.print("输入数字:");
int num = scanner.nextInt();

System.out.print("输入文本:");
scanner.nextLine();  // 消耗换行符
String text = scanner.nextLine();

3.3 输入验证示例

System.out.print("请输入分数(0-100):");
while (!scanner.hasNextInt()) {
    System.out.println("输入错误,请重新输入!");
    scanner.next(); // 清除错误输入
}
int score = scanner.nextInt();

四、调试与输入输出综合练习

4.1 学生成绩录入调试

import java.util.Scanner;

public class GradeSystem {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] scores = new int[3];
        
        for (int i = 0; i < scores.length; i++) {
            System.out.printf("请输入第%d门成绩:", i+1);
            // 在此行设置断点观察i值变化
            scores[i] = scanner.nextInt();
        }
        
        printAverage(scores);
        scanner.close();
    }

    private static void printAverage(int[] arr) {
        int sum = 0;
        for (int num : arr) {
            sum += num;  // 在此行设置断点观察sum累加
        }
        System.out.printf("平均分:%.2f", (double)sum/arr.length);
    }
}

五、常见问题解决方案

5.1 输入不匹配异常

错误现象

Exception in thread "main" java.util.InputMismatchException

解决方法

Scanner scanner = new Scanner(System.in);
System.out.print("请输入数字:");
while (!scanner.hasNextInt()) {
    System.out.println("请正确输入数字!");
    scanner.next(); // 清除错误输入
}
int num = scanner.nextInt();

5.2 调试时变量不显示

解决方法

  1. 检查是否处于调试模式
  2. 确保变量在当前作用域内
  3. 在Watches窗口手动添加观察变量

学习建议

1.调试实践

  • 在循环体内设置断点观察变量变化
  • 尝试修改运行中的变量值观察程序行为
  • 使用条件断点调试数组越界问题

2.输入输出练习

  • 编写计算器程序(输入两个数+运算符)
  • 实现用户注册系统(输入用户名/密码/年龄)
  • 制作简易商品库存管理系统

3.进阶技巧

  • 使用System.console()获取密码输入(隐藏输入)
  • 学习日志框架(如SLF4J)替代System.out
  • 掌握IDE的Evaluate Expression功能(调试时执行代码片段)

掌握这些调试和输入输出技能后,可以更高效地开发Java应用程序,快速定位和修复代码中的问题。

相关文章

深度剖析:从迷茫到精通,我用「三层递进法」拆解复杂Java项目

深度剖析:从迷茫到精通,我用「三层递进法」拆解复杂Java项目声明本文采用故事化叙事方法来探讨如何深入理解Java项目的技术概念。文中的人物、公司名称、具体业务场景及时间线均为虚构创作。本文中的案例仅...

Java程序员必备的代码调试技巧:让Bug无处遁形

Java程序员必备的代码调试技巧:让Bug无处遁形作为一个Java程序员,面对代码中隐藏的bug就像侦探追踪罪犯一样充满挑战。今天就来聊聊一些实用的代码调试技巧,帮助大家迅速定位问题,提升代码质量。一...

Vue+Element UI实现断点续传、分片上传、秒传

作者:Pseudo 转发链接:https://segmentfault.com/a/1190000023434864凡是要知其然知其所以然文件上传相信很多朋友都有遇到过,那或许你也遇到过当上传大文件时...

Java工程师必备的代码调试技巧

Java工程师必备的代码调试技巧作为一个Java工程师,代码调试是你日常工作中不可或缺的一部分。无论是初学者还是有着多年经验的老手,掌握一些实用的调试技巧都能让你事半功倍。接下来,我就带大家深入了解几...

为什么复杂 Java 代码总让人崩溃?

当你面对满屏的反射调用、没有注释的祖传代码、嵌套三层的 Stream 流时,是不是感觉自己像在解一团乱麻?别慌!今天教你用 IDEA+Arthas+Stream Debugger 的黄金组合,把复杂代...