杰瑞科技汇

Java语言程序设计练习题有哪些?

第一部分:基础语法

练习 1:Hello World 与基本变量**

编写一个 Java 程序,实现以下功能:

Java语言程序设计练习题有哪些?-图1
(图片来源网络,侵删)
  1. 定义两个整型变量 ab,并分别赋值为 10 和 20。
  2. 定义一个双精度浮点型变量 sum,用于存储 ab 的和。
  3. 计算和并赋值给 sum
  4. 使用 System.out.println 输出 "a + b = " 以及 sum 的值。

提示:

  • 基本数据类型:int, double
  • 变量声明和赋值。
  • 字符串连接可以使用 。

参考答案:

public class BasicVariables {
    public static void main(String[] args) {
        // 1. 定义并赋值
        int a = 10;
        int b = 20;
        // 2. 定义 sum 变量
        double sum;
        // 3. 计算和
        sum = a + b;
        // 4. 输出结果
        System.out.println("a + b = " + sum);
    }
}

输出:

a + b = 30.0

练习 2:用户交互与流程控制**

编写一个程序,要求用户从键盘输入一个整数,然后判断该数是奇数还是偶数,并输出结果。

Java语言程序设计练习题有哪些?-图2
(图片来源网络,侵删)

提示:

  • 使用 Scanner 类来获取用户输入。
  • 判断奇偶数可以使用取模运算符 。number % 2 == 0,则为偶数,否则为奇数。
  • 需要处理 InputMismatchException 异常,以防用户输入的不是整数。

参考答案:

import java.util.InputMismatchException;
import java.util.Scanner;
public class OddOrEven {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数: ");
        try {
            int number = scanner.nextInt();
            if (number % 2 == 0) {
                System.out.println(number + " 是一个偶数。");
            } else {
                System.out.println(number + " 是一个奇数。");
            }
        } catch (InputMismatchException e) {
            System.out.println("输入错误:请输入一个有效的整数。");
        } finally {
            scanner.close(); // 关闭 Scanner,防止资源泄漏
        }
    }
}

示例运行 1:

请输入一个整数: 42
42 是一个偶数。

示例运行 2:

Java语言程序设计练习题有哪些?-图3
(图片来源网络,侵删)
请输入一个整数: 17
17 是一个奇数。

练习 3:循环结构**

打印出 1 到 100 之间所有能被 7 整除但不能被 5 整除的整数,每行打印 5 个数字。

提示:

  • 使用 for 循环遍历 1 到 100。
  • 在循环体内使用 if 条件语句进行判断:i % 7 == 0 && i % 5 != 0
  • 使用一个计数器来控制每行打印的数字数量。

参考答案:

public class DivisibleBy7Not5 {
    public static void main(String[] args) {
        int count = 0; // 用于计数,每行打印5个
        for (int i = 1; i <= 100; i++) {
            if (i % 7 == 0 && i % 5 != 0) {
                System.out.print(i + "\t"); // 使用制表符对齐
                count++;
                // 每打印5个数字就换行
                if (count % 5 == 0) {
                    System.out.println();
                }
            }
        }
        // 如果最后一行不满5个,也需要换行
        if (count % 5 != 0) {
            System.out.println();
        }
    }
}

输出:

7      14     21     28     49
56     63     77     84     91
98

第二部分:面向对象编程

练习 4:创建简单的类**

设计一个 Student 类,包含以下属性和方法:

  • 属性: name (姓名), age (年龄), studentId (学号)。
  • 方法:
    • 一个构造方法,用于初始化所有属性。
    • study() 方法,打印出 [姓名] 正在学习 Java。
    • displayInfo() 方法,打印出学生的所有信息。

提示:

  • 类的定义使用 class 关键字。
  • 属性通常是 private 的,以实现封装。
  • 构造方法与类名相同,没有返回值。
  • 访问私有属性需要通过 publicgettersetter 方法(本练习为了简化,可以直接在构造方法中初始化,displayInfo 直接访问)。

参考答案:

public class Student {
    // 私有属性
    private String name;
    private int age;
    private String studentId;
    // 构造方法
    public Student(String name, int age, String studentId) {
        this.name = name;
        this.age = age;
        this.studentId = studentId;
    }
    // study 方法
    public void study() {
        System.out.println(this.name + " 正在学习 Java。");
    }
    // displayInfo 方法
    public void displayInfo() {
        System.out.println("学生信息:");
        System.out.println("  姓名: " + this.name);
        System.out.println("  年龄: " + this.age);
        System.out.println("  学号: " + this.studentId);
    }
    // Getter 和 Setter (良好的实践)
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    // ... 其他 getter 和 setter
}

练习 5:使用类**

创建一个 Main 类,在 main 方法中:

  1. 创建两个 Student 类的对象。
  2. 分别调用它们的 displayInfo()study() 方法。

提示:

  • 使用 new 关键字创建对象。
  • 通过 对象名.方法名() 来调用方法。

参考答案:

public class Main {
    public static void main(String[] args) {
        // 创建第一个学生对象
        Student student1 = new Student("张三", 20, "2025001");
        // 创建第二个学生对象
        Student student2 = new Student("李四", 21, "2025002");
        // 调用 student1 的方法
        System.out.println("--- 学生 1 ---");
        student1.displayInfo();
        student1.study();
        System.out.println(); // 空行分隔
        // 调用 student2 的方法
        System.out.println("--- 学生 2 ---");
        student2.displayInfo();
        student2.study();
    }
}

输出:

--- 学生 1 ---
学生信息:
  姓名: 张三
  年龄: 20
  学号: 2025001
张三 正在学习 Java。
--- 学生 2 ---
学生信息:
  姓名: 李四
  年龄: 21
  学号: 2025002
李四 正在学习 Java。

第三部分:常用 API 与进阶特性

练习 6:字符串处理**

编写一个程序,接收用户输入的一个字符串,

  1. 计算并输出字符串的长度。
  2. 将字符串转换为大写并输出。
  3. 检查字符串是否以 "Java" 开头,并输出结果。
  4. 使用 StringBuilder 将字符串反转并输出。

提示:

  • String 类的常用方法:length(), toUpperCase(), startsWith()
  • StringBuilder 类的 reverse() 方法。

参考答案:

import java.util.Scanner;
public class StringManipulation {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个字符串: ");
        String input = scanner.nextLine();
        scanner.close();
        // 1. 计算长度
        System.out.println("字符串长度: " + input.length());
        // 2. 转换为大写
        System.out.println("大写形式: " + input.toUpperCase());
        // 3. 检查开头
        if (input.startsWith("Java")) {
            System.out.println("字符串以 'Java' 开头。");
        } else {
            System.out.println("字符串不以 'Java' 开头。");
        }
        // 4. 反转字符串
        StringBuilder sb = new StringBuilder(input);
        String reversed = sb.reverse().toString();
        System.out.println("反转后的字符串: " + reversed);
    }
}

示例运行:

请输入一个字符串: Java is fun
字符串长度: 11
大写形式: JAVA IS FUN
字符串以 'Java' 开头。
反转后的字符串: nuf si avaJ

练习 7:异常处理**

模拟一个简单的银行账户取款操作,账户初始余额为 1000 元。

  1. 定义一个 InsufficientFundsException (自定义异常),当取款金额大于余额时抛出。
  2. 编写一个 BankAccount 类,包含 balance 属性和一个 withdraw(double amount) 方法。
  3. withdraw 方法中,检查取款金额,如果金额无效(负数)或余额不足,则抛出相应的异常。
  4. main 方法中,创建 BankAccount 对象,并尝试进行几次取款操作,使用 try-catch 块来捕获并处理可能发生的异常。

提示:

  • 自定义异常需要继承 Exception 类。
  • throw new InsufficientFundsException("错误信息")
  • try-catch-finally 结构。

参考答案:

// 1. 自定义异常
class InsufficientFundsException extends Exception {
    public InsufficientFundsException(String message) {
        super(message);
    }
}
// 2. BankAccount 类
class BankAccount {
    private double balance;
    public BankAccount(double initialBalance) {
        this.balance = initialBalance;
    }
    public void withdraw(double amount) throws InsufficientFundsException {
        if (amount < 0) {
            throw new IllegalArgumentException("取款金额不能为负数。");
        }
        if (amount > balance) {
            throw new InsufficientFundsException("余额不足,当前余额: " + balance + ", 尝试取款: " + amount);
        }
        balance -= amount;
        System.out.println("取款成功,当前余额: " + balance);
    }
    public double getBalance() {
        return balance;
    }
}
// 3. Main 类
public class BankSimulation {
    public static void main(String[] args) {
        BankAccount account = new BankAccount(1000);
        try {
            System.out.println("--- 尝试取款 500 ---");
            account.withdraw(500);
            System.out.println("\n--- 尝试取款 600 ---");
            account.withdraw(600); // 这行会抛出异常
        } catch (InsufficientFundsException e) {
            System.err.println("取款失败: " + e.getMessage());
        } catch (IllegalArgumentException e) {
            System.err.println("取款失败: " + e.getMessage());
        }
        System.out.println("\n最终账户余额: " + account.getBalance());
    }
}

输出:

--- 尝试取款 500 ---
取款成功,当前余额: 500.0
--- 尝试取款 600 ---
取款失败: 余额不足,当前余额: 500.0, 尝试取款: 600.0
最终账户余额: 500.0

练习 8:文件 I/O**

编写一个程序,将练习 6 中用户输入的字符串写入到一个名为 output.txt 的文件中,如果文件已存在,则覆盖其内容。

提示:

  • 使用 java.nio.file 包中的 FilesPaths 类,这是现代 Java 推荐的方式。
  • Files.write(Paths.get("output.txt"), content.getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);

参考答案:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
public class FileWriteExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要写入文件的字符串: ");
        String content = scanner.nextLine();
        scanner.close();
        Path path = Paths.get("output.txt");
        try {
            // 写入文件
            // StandardOpenOption.CREATE: 如果文件不存在则创建
            // StandardOpenOption.TRUNCATE_EXISTING: 如果文件存在,则截断(清空)它
            Files.write(path, content.getBytes());
            System.out.println("内容已成功写入 output.txt");
        } catch (IOException e) {
            System.err.println("写入文件时发生错误: " + e.getMessage());
        }
    }
}

运行后: 程序会在项目根目录下创建(或覆盖)一个 output.txt 文件,文件内容为你输入的字符串。

分享:
扫描分享到社交APP
上一篇
下一篇