【微擎 源码分析】【怎么装软件源码】【冠珠溯源码】java案例源码_java 源码分析

时间:2024-12-28 10:37:06 来源:多方炮博客源码 分类:娱乐

1.用JAVA编写的案例科学计算器源代码
2.java中的任务调度之Timer定时器(案例和源码分析)

java案例源码_java 源码分析

用JAVA编写的科学计算器源代码

       以下是一个简单的用Java编写的科学计算器的源代码示例:

       java

       import java.util.Scanner;

       public class ScientificCalculator {

       public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       System.out.println("Welcome to the Scientific Calculator!");

       System.out.println("Enter 'add', 'subtract', 'multiply', 'divide', 'sin', 'cos', 'tan', 'log', 'exp', 'sqrt', or 'quit' to exit.");

       while (true) {

       System.out.print("Enter operation (e.g., add 2 3): ");

       String operation = scanner.nextLine();

       if (operation.equalsIgnoreCase("quit")) {

       break;

       }

       String[] parts = operation.split(" ");

       double num1 = Double.parseDouble(parts[1]);

       double num2 = Double.parseDouble(parts[2]);

       switch (parts[0].toLowerCase()) {

       case "add":

       System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));

       break;

       case "subtract":

       System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));

       break;

       case "multiply":

       System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));

       break;

       case "divide":

       if (num2 != 0) {

       System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));

       } else {

       System.out.println("Error: Division by zero is not allowed.");

       }

       break;

       case "sin":

       System.out.println("sin(" + num1 + ") = " + Math.sin(Math.toRadians(num1)));

       break;

       case "cos":

       System.out.println("cos(" + num1 + ") = " + Math.cos(Math.toRadians(num1)));

       break;

       case "tan":

       System.out.println("tan(" + num1 + ") = " + Math.tan(Math.toRadians(num1)));

       break;

       case "log":

       System.out.println("log(" + num1 + ") = " + Math.log(num1));

       break;

       case "exp":

       System.out.println("exp(" + num1 + ") = " + Math.exp(num1));

       break;

       case "sqrt":

       if (num1 >= 0) {

       System.out.println("sqrt(" + num1 + ") = " + Math.sqrt(num1));

       } else {

       System.out.println("Error: Cannot calculate the square root of a negative number.");

       }

       break;

       default:

       System.out.println("Error: Invalid operation.");

       break;

       }

       }

       scanner.close();

       System.out.println("Goodbye!");

       }

       }

       这个科学计算器支持基本的四则运算(加、减、源码源码乘、分析除)以及一些科学运算(正弦、案例余弦、源码源码正切、分析微擎 源码分析对数、案例指数和平方根)。源码源码用户可以通过输入相应的分析操作和两个数字来执行计算。例如,案例输入“add 2 3”将计算2加3的源码源码结果。

       代码首先导入了`Scanner`类,分析用于从用户处获取输入。案例然后,源码源码在`main`方法中,分析创建了一个`Scanner`对象,用于读取用户的输入。程序通过一个无限循环来持续接收用户的输入,直到用户输入“quit”为止。

       在循环中,程序首先提示用户输入一个操作,怎么装软件源码然后读取用户的输入并将其分割为多个部分。接着,程序将第二个和第三个部分转换为`double`类型的数字,并根据第一个部分(即操作)执行相应的计算。

       程序使用`switch`语句来根据用户输入的操作执行相应的计算。对于基本的四则运算,程序直接执行相应的计算并输出结果。对于科学运算,程序使用了Java的`Math`类中的相应方法。例如,冠珠溯源码对于正弦运算,程序使用了`Math.sin`方法,并将角度转换为弧度作为参数传递给它。

       如果用户输入了无效的操作或无效

java中的任务调度之Timer定时器(案例和源码分析)

       定时器在日常生活中如同闹钟般常见,用于在特定时间执行任务或重复执行同一任务。在Java中,内置的定时任务器 Timer 是实现此功能的强大工具。本文将深入探讨 Timer 的基本使用、源码分析及其局限性。

       一、沃柑溯源码Timer 基本使用

       在 Java 中,通过 Timer 实现定时任务时,主要涉及到 Timer 和 TimerTask 这两个类。Timer 负责管理任务的执行,而 TimerTask 则包含具体任务的实现。使用步骤如下:

       1. 创建 Timer。

       2. 创建 TimerTask 并实现业务逻辑。

       3. 使用 Timer 的 schedule 方法执行 TimerTask,可以指定开始执行时间、间隔时间等参数。麻豆App源码开源

       例如,创建一个在 2 秒后执行、每隔 1 秒执行一次的 TimerTask:

       java

       Timer timer = new Timer();

       TimerTask myTask = new MyTask();

       timer.schedule(myTask, L, L);

       二、Timer 源码分析

       深入剖析 Timer 的源码有助于理解其内部机制。Timer 类内部包含 TaskQueue 和 TimerThread 两个关键组件。

       1. **TaskQueue**:这是一个最小堆,存放 Timer 的所有 TimerTask。根据每个 TimerTask 的 nextExecutionTime(下次执行开始时间)决定其在堆中的位置。nextExecutionTime 越小,任务越有可能先执行。

       2. **TimerThread**:执行 TaskQueue 中的任务后,将任务从队列中移除。

       TimerTask 的位置决定于其 nextExecutionTime,确保优先执行执行时间最早的任务。此外,Timer 默认大小为 个任务。

       构造方法包括默认构造、是否为守护线程、带名字的构造、带名字和是否为守护线程的构造。

       定时任务方法包括:

       1. schedule(task, time):在时间等于或超过 time 时执行 task 且仅执行一次。

       2. schedule(task, time, period):首次在 time 时执行 task,之后每隔 period 毫秒重复执行。

       3. schedule(task, delay):在 delay 时间后执行 task 且仅执行一次。

       4. schedule(task, delay, period):在 delay 后开始首次执行 task,之后每隔 period 毫秒重复执行。

       执行定时任务的核心在于队列的维护和优先级调度。此外,还存在 scheduleAtFixedRate 方法,其行为与 scheduleAtFixedRate 类似,但考虑了任务执行所需时间的并发性。

       三、Timer 缺陷

       尽管 Timer 提供了基本的定时任务功能,但存在一些局限性:

       1. **线程管理不足**:当多个任务执行时间过长,且时间间隔不一致时,可能会导致任务执行顺序与预期不符,影响任务调度效率。

       2. **异常处理机制**:当 TimerTask 抛出 RuntimeException,所有任务都会停止执行,缺乏异常恢复机制。

       为了克服这些缺陷,出现了更高级的 Timer 替代品 ScheduledExecutorService,以及众多优秀的框架,提供更强大的任务管理和执行能力。未来文章中将详细介绍这些工具及其优势。