Java小白_面向对象程序设计01顺序结构_01Java顺序结构之数学函数之根据三角形三边长求面积

练习 -Java顺序结构之数学函数之根据三角形三边长求面积

Java顺序结构之数学函数之根据三角形三边长求面积

    • 练习 -Java顺序结构之数学函数之根据三角形三边长求面积
      • 1. 任务要求
        • 任务描述
        • 编程要求
        • 测试说明
      • 2. 任务分析
        • 1. 输入输出分析
        • 2. 需求分析
        • 3. 所需知识
          • 1. java 库 如何获取输入
            • 1. **Scanner(InputStream source)**:
            • 2. **next()**:
            • 3. **nextInt()**:
            • 4. **nextDouble()**:
            • 5.**nextLine()**:
            • 6. **hasNext()**:
            • 7. **hasNextInt()**:
            • 8. **hasNextDouble()**:
            • 9. **useDelimiter(String pattern)**:
            • 10. 全代码示例:
          • 2. java 库 如何将输入的数据转换为三个小数类型的数据
            • 1. 用`Scanner` 类的 `nextDouble()` 方法
            • 2. 用`Scanner`类的`next()`方法
          • 3. java 选择结构 判断能不能组成三角形
            • 1.Java 如何创造方法
            • 2. java选择结构的使用
            • 3. 选择结构的判断条件 多判断条件的综合判定
          • 4. java 顺序结构 定义一个计算三角形面积的海伦公式算法
            • 1. Java 如何抽象数学表达式
            • 2. 使用Java 抽象 海伦公式
          • 5. Java如何规范化输出
            • 1. **使用 `System.out.printf()` 方法**:
            • 2. **使用 `String.format()` 方法**:
            • 3. **使用 `DecimalFormat` 类**:
        • 4. 确认代码框架
          • 1.获取三条边的数据
          • 2. 定义一个判断三条边能否组成三角形的方法
          • 3. 定义一个计算三角形面积的海伦公式算法,并在主函数中调用它
          • 4. 规范化 输出
        • 5. 书写代码
      • 3. 代码

1. 任务要求

  • [任务描述]
  • [编程要求]
  • [测试说明]

任务描述

本关任务:根据从键盘输入的三角形的三个边长,求出三角形的面积,忽略三边长度不能组成一个三角形的情况,最后结果保留两位小数。

任意三角形面积公式-海伦公式

已知三角形三边abc,则

p=21(a+b+c)

S三角形=p(pa)(pb)(pc)

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。 输出格式详情请参照右侧预期输出。

注意:给定的三个数请使用 double 类型变量接收。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。


2. 任务分析

1. 输入输出分析

根据从键盘输入的三角形的三个边长,求出三角形的面积,忽略三边长度不能组成一个三角形的情况,最后结果保留两位小数。

输入: 三角形的三个边长 数字

输出: 三角形的面积

约束条件:

  • 忽略三边长度不能组成一个三角形的情况

  • 最后结果保留两位小数

2. 需求分析
  1. 获取键盘输入的三条边 java输入获取
  2. 将三条边转换为可以计算的数据类型 字符串转换为三个double类型
  3. 将三条边计算为三角形的面积 海伦公式,定义一个方法
  4. 忽略三边长度不能组成一个三角形的情况 可用if else语句
  5. 输出三角形的面积要求 最后结果保留两位小数 print 然后中间加转换
3. 所需知识
1. java 库 如何获取输入

使用Scanner类 :

当然,Scanner 类是 Java 标准库中的一个实用工具,用于获取用户从键盘输入的数据。它提供了多种方法来处理不同类型的输入,例如整数、浮点数、字符串等。下面我将详细介绍一些 Scanner 类的主要方法:

1. Scanner(InputStream source)

Scanner 类的构造函数,用于创建一个新的 Scanner 对象,从指定的输入流(例如 System.in)读取数据。

// 从键盘输入创建 Scanner 对象
Scanner scannerFromKeyboard = new Scanner(System.in);

// 从字符串输入创建 Scanner 对象
String inputString = "Hello 123 World";
Scanner scannerFromString = new Scanner(inputString);

2. next()

用于获取下一个以空白字符(空格、制表符、换行符等)分隔的字符串,并返回该字符串。

Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = scanner.next();
System.out.println("你输入的字符串是:" + str);
3. nextInt()

用于获取下一个整数,并返回该整数。

Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int numInt = scanner.nextInt();
System.out.println("你输入的整数是:" + numInt);

4. nextDouble()

用于获取下一个浮点数,并返回该浮点数。

Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个浮点数:");
double numDouble = scanner.nextDouble();
System.out.println("你输入的浮点数是:" + numDouble);
5.nextLine()

用于获取下一行的输入,并返回该行的字符串,包括换行符在内。

Scanner scanner = new Scanner(System.in);
System.out.print("请输入一行文本:");
scanner.nextLine(); // 消耗掉nextInt或nextDouble等方法末尾的换行符
String line = scanner.nextLine();
System.out.println("你输入的文本是:" + line);
6. hasNext()

用于检查是否还有下一个标记(字符串、整数、浮点数等)可供读取,如果有则返回 true,否则返回 false

Scanner scanner = new Scanner(System.in);
System.out.print("再输入一个字符串来检查 hasNext() 方法:");
boolean hasNextStr = scanner.hasNext();
System.out.println("是否有下一个字符串:" + hasNextStr);
7. hasNextInt()

用于检查是否还有下一个整数可供读取,如果有则返回 true,否则返回 false

Scanner scanner = new Scanner(System.in);
System.out.print("再输入一个整数来检查 hasNextInt() 方法:");
boolean hasNextInt = scanner.hasNextInt();
System.out.println("是否有下一个整数:" + hasNextInt);
8. hasNextDouble()

用于检查是否还有下一个浮点数可供读取,如果有则返回 true,否则返回 false

Scanner scanner = new Scanner(System.in);
System.out.print("再输入一个浮点数来检查 hasNextDouble() 方法:");
boolean hasNextDouble = scanner.hasNextDouble();
System.out.println("是否有下一个浮点数:" + hasNextDouble);
9. useDelimiter(String pattern)

用于设置输入分隔符的模式,例如 useDelimiter(",") 将设置逗号为输入分隔符。

Scanner scanner = new Scanner(System.in);
// 使用逗号作为输入分隔符
scanner.useDelimiter(",");
System.out.println("请输入用逗号分隔的三个整数:");

// 获取三个整数输入,并以逗号分隔
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int num3 = scanner.nextInt();

// 输出获取的三个整数
System.out.println("你输入的三个整数分别是:" + num1 + ", " + num2 + ", " + num3);

10. 全代码示例:
import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // next() 方法示例
        System.out.print("请输入一个字符串:");
        String str = scanner.next();
        System.out.println("你输入的字符串是:" + str);

        // nextInt() 方法示例
        System.out.print("请输入一个整数:");
        int numInt = scanner.nextInt();
        System.out.println("你输入的整数是:" + numInt);

        // nextDouble() 方法示例
        System.out.print("请输入一个浮点数:");
        double numDouble = scanner.nextDouble();
        System.out.println("你输入的浮点数是:" + numDouble);

        // nextLine() 方法示例
        System.out.print("请输入一行文本:");
        scanner.nextLine(); // 消耗掉nextInt或nextDouble等方法末尾的换行符
        String line = scanner.nextLine();
        System.out.println("你输入的文本是:" + line);

        // hasNext() 方法示例
        System.out.print("再输入一个字符串来检查 hasNext() 方法:");
        boolean hasNextStr = scanner.hasNext();
        System.out.println("是否有下一个字符串:" + hasNextStr);

        // hasNextInt() 方法示例
        System.out.print("再输入一个整数来检查 hasNextInt() 方法:");
        boolean hasNextInt = scanner.hasNextInt();
        System.out.println("是否有下一个整数:" + hasNextInt);

        // hasNextDouble() 方法示例
        System.out.print("再输入一个浮点数来检查 hasNextDouble() 方法:");
        boolean hasNextDouble = scanner.hasNextDouble();
        System.out.println("是否有下一个浮点数:" + hasNextDouble);

        scanner.close();
    }
}

这些方法提供了灵活的方式来处理各种类型的用户输入。你可以根据需要选择适合的方法来读取用户输入的数据,并进行相应的处理。

2. java 库 如何将输入的数据转换为三个小数类型的数据
1. 用Scanner 类的 nextDouble() 方法

当用户输入数据时,你可以使用 Scanner 类的 nextDouble() 方法来获取输入的浮点数。下面是一个示例代码片段,演示如何将输入的数据转换为三个小数类型的数据:

Scanner scanner = new Scanner(System.in);

System.out.print("请输入三个小数,用空格分隔:");
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
double num3 = scanner.nextDouble();

System.out.println("你输入的三个小数分别是:" + num1 + ", " + num2 + ", " + num3);

scanner.close();

在这个示例中,我们使用 Scanner 类的 nextDouble() 方法三次,分别获取用户输入的三个小数,并将它们保存到 double 类型的变量 num1num2num3 中。然后,我们将这些变量打印输出以确认输入的正确性。

2. 用Scanner类的next()方法

如果输入的数据是一行代码空格分割的三个小数,你可以使用 Scanner 类的 next() 方法获取一行输入,然后使用 String 类的 split() 方法将其按空格分割成字符串数组,最后将字符串数组中的元素转换为小数类型。下面是相应的代码示例:

Scanner scanner = new Scanner(System.in);

System.out.print("请输入三个小数,用空格分隔:");
String input = scanner.nextLine();
String[] parts = input.split(" ");

// 将字符串数组中的元素转换为小数类型
double num1 = Double.parseDouble(parts[0]);
double num2 = Double.parseDouble(parts[1]);
double num3 = Double.parseDouble(parts[2]);

System.out.println("你输入的三个小数分别是:" + num1 + ", " + num2 + ", " + num3);

scanner.close();

在这个示例中,我们首先使用 nextLine() 方法获取一行输入,然后使用 split(" ") 方法将输入的字符串按空格分割成字符串数组 parts。最后,我们将字符串数组中的每个元素转换为小数类型,并保存到对应的变量中。

3. java 选择结构 判断能不能组成三角形

这个主要涉及知识是,创造方法以及调用,java选择结构的使用,选择结构的判断条件

1.Java 如何创造方法

明白了,让我们从头开始。在Java中,你可以通过以下步骤来创建方法:

  1. 方法的声明:你需要指定方法的访问修饰符(例如 publicprivate 等)、返回类型(如果方法不返回任何值,则返回类型为 void)、方法名称以及参数列表。方法的声明语法如下:

    访问修饰符 返回类型 方法名(参数列表) {
        // 方法体
    }
    
  2. 方法的实现:在方法体内编写方法的具体功能。

  3. 方法的调用:在其他地方通过方法名以及传递给方法的参数来调用该方法。

下面是一个示例代码,演示了如何创建一个简单的方法并在主程序中调用它:

public class MethodExample {
    // 方法的声明
    public static void printMessage(String message) {
        // 访问修饰符 返回类型 方法名 参数列表
        /***
        public static void printMessage(String message) 这个方法中使用了两个访问修饰符。在		Java中,一个方法可以同时具有多个修饰符,它们的顺序通常是任意的。

		public 是访问修饰符,表示该方法可以被其他类访问。
		static 是一个关键字,表示该方法属于类而不是对象,在调用时可以直接通过类名来调用。
		void 是返回类型,表示该方法不返回任何值。
		printMessage 是方法名。
		(String message) 是参数列表,这里表示该方法接受一个字符串类型的参数。
		因此,public static void printMessage(String message) 这个方法声明了一个公共的静态方法,它接受一个字符串参数,并且不返回任何值。
        */
        // 方法的实现
        System.out.println(message);
    }

    public static void main(String[] args) {
        // 方法的调用
        printMessage("Hello, World!");//这样可以只可视方法的使用,对隐藏代码很好
    }
}

在这个示例中,我们创建了一个名为 printMessage 的方法,它接受一个字符串参数 message,并在方法体内使用 System.out.println() 方法打印出这个消息。然后,在 main 方法中,我们通过方法名 printMessage 来调用这个方法,并传递一个字符串参数 “Hello, World!”。


2. java选择结构的使用

在Java中,选择结构用于根据条件来执行不同的代码块。常见的选择结构有以下几种:

  1. if 语句if 语句根据指定的条件执行代码块。如果条件为真,则执行 if 代码块;否则,执行可选的 elseelse if 代码块。

    if (condition) {
        // 如果条件为真,则执行这里的代码块
    } else if (anotherCondition) {
        // 如果另一个条件为真,则执行这里的代码块
    } else {
        // 如果上述条件都不满足,则执行这里的代码块
    }
    
  2. switch 语句switch 语句根据表达式的值执行不同的代码块。它将表达式的值与每个 case 标签进行比较,并执行与匹配的 case 标签关联的代码块。

    switch (expression) {
        case value1:
            // 如果 expression 的值等于 value1,则执行这里的代码块
            break;
        case value2:
            // 如果 expression 的值等于 value2,则执行这里的代码块
            break;
        default:
            // 如果 expression 的值不等于任何一个 case,则执行这里的代码块
            break;
    }
    
  3. 三元条件运算符:三元条件运算符 ? : 提供了一种简洁的方式根据条件选择执行不同的代码块。

    result = (condition) ? value1 : value2;
    

这些选择结构在不同的情况下有不同的用途,你可以根据需要选择适合的结构来实现你的代码逻辑。


3. 选择结构的判断条件 多判断条件的综合判定

在Java中,你可以使用逻辑运算符来进行多个条件的综合判断。常用的逻辑运算符包括:

  1. 与运算符 (&&):表示“与”,当且仅当所有条件都为真时,整个表达式才为真。

  2. 或运算符 (||):表示“或”,当至少有一个条件为真时,整个表达式就为真。

  3. 非运算符 (!):表示“非”,用于取反,将真变为假,假变为真。

这些逻辑运算符可以组合使用,以满足复杂的条件判断需求。下面是一个简单的示例代码,演示了如何使用逻辑运算符进行多个条件的综合判断:

int x = 5;
int y = 10;
int z = 15;

// 综合判断条件,当 x 大于 0 且 y 大于 0 且 z 大于 0 时,输出“所有数都大于 0”
if (x > 0 && y > 0 && z > 0) {
    System.out.println("所有数都大于 0");
}

// 综合判断条件,当 x 小于 0 或者 y 小于 0 或者 z 小于 0 时,输出“至少有一个数小于 0”
if (x < 0 || y < 0 || z < 0) {
    System.out.println("至少有一个数小于 0");
}

// 综合判断条件,当 x 不等于 0 时,输出“x 不等于 0”
if (x != 0) {
    System.out.println("x 不等于 0");
}

在这个示例中,我们使用了 &&||! 这三种逻辑运算符来组合判断多个条件。你可以根据具体的逻辑需求,灵活地使用这些运算符来编写条件判断语句。


4. java 顺序结构 定义一个计算三角形面积的海伦公式算法
1. Java 如何抽象数学表达式

在Java中,可以通过定义类和方法来抽象数学表达式。抽象数学表达式意味着将数学概念、运算符和操作封装在类和方法中,以便在程序中更方便地使用和操作。这通常涉及到面向对象的编程思想。

下面是一个简单的示例,演示了如何在Java中抽象一个简单的数学表达式:

public class MathExpression {
    // 定义一个方法,计算两个数的和
    public static double add(double num1, double num2) {
        return num1 + num2;
    }

    // 定义一个方法,计算两个数的差
    public static double subtract(double num1, double num2) {
        return num1 - num2;
    }

    // 定义一个方法,计算两个数的乘积
    public static double multiply(double num1, double num2) {
        return num1 * num2;
    }

    // 定义一个方法,计算两个数的商
    public static double divide(double num1, double num2) {
        if (num2 == 0) {
            throw new ArithmeticException("除数不能为0");
        }
        return num1 / num2;
    }

    public static void main(String[] args) {
        double a = 10.0;
        double b = 5.0;

        // 使用方法来计算数学表达式
        double sum = add(a, b);
        double difference = subtract(a, b);
        double product = multiply(a, b);
        double quotient = divide(a, b);

        // 输出结果
        System.out.println("和:" + sum);
        System.out.println("差:" + difference);
        System.out.println("乘积:" + product);
        System.out.println("商:" + quotient);
    }
}

在这个示例中,我们定义了一个 MathExpression 类,并在其中定义了四个静态方法 addsubtractmultiplydivide,分别用于计算两个数的加、减、乘、除运算。然后,在 main 方法中,我们使用这些方法来计算数学表达式,并输出结果。这种方式可以很好地抽象数学表达式,并在程序中重复使用。

2. 使用Java 抽象 海伦公式

海伦公式用于计算三角形的面积,它的公式如下所示:

A r e a = s ⋅ ( s − a ) ⋅ ( s − b ) ⋅ ( s − c ) Area = \sqrt{s \cdot (s - a) \cdot (s - b) \cdot (s - c)} Area=s(sa)(sb)(sc)

其中,(s) 为半周长,(a)、(b)、(c) 分别为三角形的三条边长。

我们可以将这个公式抽象成一个方法,以便在程序中方便地调用。下面是一个示例代码:

public class TriangleAreaCalculator {
    // 计算三角形的面积
    public static double calculateArea(double side1, double side2, double side3) {
        //访问修饰符:公共、静态、返回的数据类型:double, 
        //参数列表:side1 double类型、side2 double类型、side3 double类型
        
        // 计算半周长
        double s = (side1 + side2 + side3) / 2;

        // 计算海伦公式中的表达式
        double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
        //

        return area;
    }

    public static void main(String[] args) {
        // 三个边长作为示例输入
        double side1 = 3.0;
        double side2 = 4.0;
        double side3 = 5.0;

        // 调用方法计算三角形的面积
        double area = calculateArea(side1, side2, side3);

        // 输出结果
        System.out.println("三角形的面积为:" + area);
    }
}

在这个示例中,我们定义了一个 TriangleAreaCalculator 类,并在其中定义了一个静态方法 calculateArea,用于计算三角形的面积。在 main 方法中,我们提供了三条边长作为示例输入,然后调用 calculateArea 方法来计算三角形的面积,并输出结果。

5. Java如何规范化输出

在Java中,你可以使用格式化字符串来规范化输出,以满足特定的输出限定条件。常见的输出规范化方法包括:

1. 使用 System.out.printf() 方法

这个方法允许你使用格式化字符串指定输出的格式。你可以在格式化字符串中使用占位符 % 来表示要输出的变量,然后提供相应的参数来替换占位符。

double num = 3.14159;
System.out.printf("保留两位小数:%.2f%n", num);

在上面的示例中,%.2f 表示输出一个浮点数,保留两位小数。

2. 使用 String.format() 方法

这个方法与 System.out.printf() 类似,但它返回一个格式化后的字符串,而不是直接输出到控制台。

double num = 3.14159;
String formattedString = String.format("保留两位小数:%5.2f%n", num);
System.out.println(formattedString);

这里的 %5.2f 表示输出一个浮点数,总宽度为5,保留两位小数。

3. 使用 DecimalFormat

这个类提供了更多灵活的格式化选项,你可以通过实例化 DecimalFormat 对象来设置输出的格式。

import java.text.DecimalFormat;

double num = 3.14159;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println("保留两位小数:" + df.format(num));

在这个示例中,我们使用 # 表示可选的数字位置,. 表示小数点,## 表示保留两位小数。

通过使用这些方法,你可以灵活地规范化输出,满足特定的输出限定条件。

4. 确认代码框架
1.获取三条边的数据
// 创建一个输入流对象
InputSteam inputStream = createInputStream()

// 创建一个Scanner对象,用于从输入流中读取数据
Scanner scanner = new Scanner(inputStream)

// 提示用户输入第一条边
output("请输入第一条边的长度:")

// 读取用户输入的第一条边
double side1 = scanner.nextDouble()

// 提示用户输入第二条边
output("请输入第二条边的长度:")

// 读取用户输入的第二条边
double side2 = scanner.nextDouble()

// 提示用户输入第三条边
output("请输入第三条边的长度:")

// 读取用户输入的第三条边
double side3 = scanner.nextDouble()

// 关闭Scanner对象
scanner.close()

2. 定义一个判断三条边能否组成三角形的方法
// 函数:检查三角形是否合法
// 参数:
//   side1: 第一条边的长度
//   side2: 第二条边的长度
//   side3: 第三条边的长度
// 返回值:
//   布尔值,如果能够组成三角形则返回true,否则返回false
Function isValidTriangle(side1, side2, side3):
    // 检查条件:任意两边之和大于第三边
    If (side1 + side2 > side3) AND (side1 + side3 > side2) AND (side2 + side3 > side1) Then:
        Return true
    Else:
        Return false

// 主函数
Function main():
    // 从用户输入获取三条边的长度
    Output ("请输入第一条边的长度:")
    double side1 = Input
    
    Output ("请输入第二条边的长度:")
    double side2 = Input
    
    Output ("请输入第三条边的长度:")
    double side3 = Input
    
    // 调用函数检查是否能够组成三角形
    boolean isTriangle = isValidTriangle(side1, side2, side3)
    
    // 输出结果
    If isTriangle equals true Then:
        Output ("这三条边可以组成一个三角形。")
    Else:
		Output ("这三条边不能组成一个三角形。")

3. 定义一个计算三角形面积的海伦公式算法,并在主函数中调用它
// 函数:计算三角形面积
// 参数:
//   side1: 第一条边的长度
//   side2: 第二条边的长度
//   side3: 第三条边的长度
// 返回值:
//   浮点数,表示三角形的面积
Function calculateTriangleArea(side1, side2, side3):
    // 计算半周长
    s = (side1 + side2 + side3) / 2
    
    // 使用海伦公式计算面积
    area = √(s * (s - side1) * (s - side2) * (s - side3))
    
    Return area

// 主函数
Function main():
    // 获取用户输入的三条边的长度
    Output ("请输入第一条边的长度:")
    side1 = Input
    
    Output ("请输入第二条边的长度:")
    side2 = Input
    
    Output ("请输入第三条边的长度:")
    side3 = Input
    
    // 调用函数计算三角形的面积
    area = calculateTriangleArea(side1, side2, side3)
    
    // 输出结果
    Output ("三角形的面积为:" + area)

4. 规范化 输出
// Function: 格式化输出
// 参数:
//   value: 要输出的值
//   decimalPlaces: 小数点后要保留的位数
// 返回值:
//   无
Function formatOutput(value, decimalPlaces):
    // 将值转换为字符串
    stringValue = Convert value to string
    
    // 寻找小数点的位置
    decimalPointIndex = Find the position of decimal point in stringValue
    
    // 获取小数点后的位数
    decimalDigits = Calculate the number of digits after the decimal point in stringValue
    
    // 如果小数点位数大于要求的位数,则截取到要求的位数
    If decimalDigits > decimalPlaces Then:
        Truncate stringValue to decimalPlaces digits after the decimal point
    
    // 如果小数点位数小于要求的位数,则补零到要求的位数
    Else if decimalDigits < decimalPlaces Then:
        Pad stringValue with zeros to have decimalPlaces digits after the decimal point
    
    // 输出格式化后的值
    Output stringValue

// 主函数
Function main():
    // 定义一个数值
    number = 3.1415
    
    // 调用格式化输出函数
    Call formatOutput(number, 2) // 保留两位小数

5. 书写代码
import java.util.*;
import java.text.DecimalFormat;
public class TriangleArea{
    public static void main(String[] args){
        Scanner scanner = new Scanner (System.in);
        double side1 = scanner.nextDouble();
        double side2 = scanner.nextDouble();
        double side3 = scanner.nextDouble();
        if !(isValidTriangle(side1,side2,side3)){
            print
            return 0;
        }
        double area = calculateTriangleArea(side1,side2,side3);
        num_to_str(area);
        scanner.close()
    }
    public static boolean isValidTriangle(double side1,double side2,double side3){
        if (side1 + side2 > side3) &&(side1 + side3 > side2)&&(side2 + side3 > side1){
            return True;
        }
        else{
            return False;
        }
    }
    public static double calculateTriangleArea(double side1,double side2,double side3){
        double area = math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
        return area;
    }
    public static void num_to_str(double num){
        DecimalFormat df = new DecimalFormat("#.##");
        String output = df.format(num);
        System.out.pirntf("三角形的面积为:"+output);
    }
}

3. 代码

修改后的最终代码

import java.util.*;
import java.text.DecimalFormat;
import java.lang.*;

public class TriangleArea {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double side1 = scanner.nextDouble();
        double side2 = scanner.nextDouble();
        double side3 = scanner.nextDouble();
        if (isValidTriangle(side1, side2, side3) == false) {
            System.out.println("三角形不存在");
            return;
        }
        double area = calculateTriangleArea(side1, side2, side3);
        num_to_str(area);
        scanner.close();
    }

    public static boolean isValidTriangle(double side1, double side2, double side3) {
        if ((side1 + side2 > side3) && (side1 + side3 > side2) && (side2 + side3 > side1)) {
            return true;
        } else {
            return false;
        }
    }

    public static double calculateTriangleArea(double side1, double side2, double side3) {
        double s = (side1 + side2 + side3) / 2;
        double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
        return area;
    }

    public static void num_to_str(double num) {
        DecimalFormat df = new DecimalFormat("#.##");
        df.setMinimumFractionDigits(2); // 设置最小的小数位数为2
        String output = df.format(num);
        System.out.printf("三角形的面积为:" + output);
    }
}

之前的代码

/**
 * 任务:根据从键盘输入的三角形的三个边长,求出三角形的面积。
 * 类名为:TriangleArea
 */


/**
 * 任务:根据从键盘输入的三角形的三个边长,求出三角形的面积。
 * 类名为:TriangleArea
 */


import java.util.Scanner;

public class TriangleArea {
    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);

        /********** Begin **********/
        // 第一步:获取键盘三次输入的值
        double a = reader.nextDouble();
        double b = reader.nextDouble();
        double c = reader.nextDouble();

        // 第二步:根据三角形面积公式求取三角形面积
        double s = (a + b + c) / 2;
        double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));

        // 第三步:格式化输出三角形的面积
        System.out.printf("三角形的面积为:%.2f", area);
        /********** End **********/

        reader.close();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/607295.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

StarRocks 跨集群数据迁移,SDM 帮你一键搞定!

作者&#xff1a;严祥光&#xff0c;StarRocks Active Contributor&#xff0c;StarRocks 存算分离核心研发&#xff0c;在社区中主要负责数据导入、跨集群同步、数据迁移和容灾等工作。 有时候&#xff0c;你可能会为以下需求而苦恼&#xff0c;苦苦搜索更好的解决方案&#x…

记录创建项目java version 没有8的问题

问题&#xff1a; 解决方案 java版本选择21&#xff08;21可以兼容jdk8&#xff09; SpringBoot选择3.2.5 进入项目后手动在pom.xml中修改版本

基于stm32的spi从机实验HAL库编程

目录 基于stm32的spi从机实验HAL库编程前言业务场景硬件设计接线配置swd接口配置spi配置DMA配置中断配置系统时钟配置工程生成代码写点从机代码上机现象后记本文使用的测试工程 基于stm32的spi从机实验HAL库编程 前言 在微控制器的世界中&#xff0c;串行外设接口(SPI)是一种…

java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节&#xff0c;所以加了些代码&#xff0c;使得交互更加的具体有趣! 效果 大家可以多运行几次代码&#xff0c;得到不同的战况&#xff01;&#xff01; 代码实现 1.bean类 import java.util.Random;public class TextGame {private Strin…

ardupilot的固定翼飞行模式

飞行模式 APM所有的飞行模式都在对应的机型的文件夹下的mode.h里面有定义,针对于不同的模型,功能函数在基类中Mode中都是以纯虚函数实现了, 然后在继承的子类中重新实现它,以实现多态。 takeoff模式 参见网址在 ArduPlane 4.0 及更高版本中,自动起飞本身也是一种模式(…

文件操作

前言&#xff1a; 文件内容属性 要向访问文件就要打开文件——>用进程来打开——>要把文件先加载到内存中——> 一个进程可以打开多个文件&#xff0c;OS中也有可能多个进程打开了多个文件 文件以多&#xff0c;就需要进行管理&#xff0c;——先描述再组织 没有被打开…

【图文教程】PyCharm安装配置PyQt5+QtDesigner+PyUic+PyRcc

这里写目录标题 PyQt5、Qt Designer、PyUic、PyRcc简介&#xff08;1&#xff09;下载安装PyQt5&#xff08;2&#xff09;打开designer.exe所在位置&#xff08;3&#xff09;在PyCharm中配置QtDesigner&#xff08;4&#xff09;验证QtDesigner是否配置成功&#xff08;5&…

thinkphp6使用layui分页组件做分页效果

博主用的是layui2.9.8的版本&#xff0c;但这个版本的分页组件是动态效果的&#xff0c;但我需要的是静态分页&#xff0c;所以我自己封装了一个生成layui的分页代码生成代码。代码如下&#xff1a; 1、先创建文件&#xff0c;路径是extent/layui/LayuiPage.php&#xff0c;加…

HashMap前世今生

概述 HashMap是我们常用的一种数据结构&#xff0c;他是一个key-value结构。我们来深入了解一下。 1.8之前用的数组加链表 1.8之后用的数组加链表加红黑树&#xff0c;当链表数量大于8时&#xff0c;将链表转为红黑树。当红黑书节点小于6又会转为链表。 浅析HashMap的put()方…

达梦数据库限制用户登录IP测试

达梦数据库创建用户时可以限制登录ip和时间段。 创建测试测试用户 create user test1 identified by Test_1234 ALLOW_IP "192.168.100.101"; 限定该用户只能通过192.168.100.101地址登录数据库 连接测试 上图可见&#xff0c;192.168.100.101客户端可以连接上19…

纯血鸿蒙APP实战开发——Grid和List内拖拽交换子组件位置

Grid和List内拖拽交换子组件位置 介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子…

搭建产品帮助体系指南干货在这里

产品的成功不仅需要它的功能强大&#xff0c;还要让用户对产品有一个良好的体验。一个完善全面的产品帮助体系&#xff0c;能够很大程度地提升用户体验&#xff0c;帮助用户更好地理解和使用产品。如何搭建一个高效、实用的产品帮助体系呢&#xff1f;下面&#xff0c;我将为你…

Tomcat安装与配置(详细教程)

一、安装Tomcat服务器 1.下载地址&#xff08;Tomcat官网&#xff09;http://tomcat.apache.org/ 2.将下载的zip文件解压到指定的目录&#xff08;例如&#xff1a;D盘&#xff0c;目录不要有中文&#xff09; D:\apache-tomcat-9.0.43 二、配置Tomcat环境变量 &#xff08;…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中&#xff0c;会遇到有UI相似的结构&#xff0c;如果每个UI都单独声明一份&#xff0c;会产生大量冗余代码&#xff0c;不利于阅读。遇到…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗&#xff1f;在快节奏的现代生活中&#xff0c;思维导图作为一种高效的信息组织和表达工具&#xff0c;越来越受到人们的青睐。随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;AI思维导图软件也应运而生&#xff0c;它们不仅能够帮助用户…

软件接口测试规范流程

1、需求分析 1.1 确认测试目的和测试对象&#xff1a; 了解需求并明确测试目的&#xff0c;如测试一个本地 API 还是跨网站的远程 API。 1.2 确认测试的基本条件: 确定测试所需的测试数据&#xff0c;测试环境以及测试团队中的角色和职责。 1.3. 对接口文档进行验证&#xf…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述&#xff1a; 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源&#xff0c;然后重新打开打印机。 故障检修及分析&#xff1a; 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接&#xff1b; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

Segmentation fault (core dumped)排查

先泼盆冷水&#xff0c;这个问题比较棘手&#xff0c;有的能通过重装opencv相关包修复&#xff0c;有的可能还是直接换一个没问题的环境比较快…… 我最后是没有解决的&#xff0c;折腾了几个小时后&#xff0c;还是听同事的话&#xff0c;把docker镜像重启了&#xff0c;幸好…

day04—java基础之方法详解

方法概述 方法是具有特定功能的代码集合&#xff0c;由于我们是把重复的代码写到方法当中&#xff0c;以后要用直接调用方法即可&#xff0c;不需要再写一遍了。代码相当于只写了一遍。所以可以提高代码的复用性。如果要修改代码&#xff0c;我们也只要修改一处即可&#xff0…

JavaSwing技术实现一个电子表程序

使用JavaSwing技术实现一个简单的电子表盘&#xff0c;如下所示。 下载链接 有兴趣的读者可以点击链接下载&#xff0c;博主承诺绝对真实有效。
最新文章