题目

读入三个正整数边长 a、b、c,能构成三角形则输出 能构成,否则输出 不能构成。

输入格式:一行输入三个正整数 a、b、c,以空格分隔。

输出格式:如果能构成三角形输出 能构成,否则输出 不能构成,末尾换行。

数据范围与约定:1 ≤ a, b, c ≤ 108。

思路与算法

1. 三角形几何不等式
平面上三条线段构成三角形的充要条件是:任意两边之和大于第三边。在未预先对三边排序的情况下,必须同时验证三个不等式:a + b > c、a + c > b、b + c > a。

2. 逻辑短路与健全性
如果其中任意一个不等式不满足(例如 1+2=3 不大于 3),则无法构成三角形;同时要保证三边长度均为正数。

完整程序

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();

        // 构成三角形充要条件:三边均为正数,且任意两边之和大于第三边
        if (a > 0 && b > 0 && c > 0
                && (long) a + b > c && (long) a + c > b && (long) b + c > a) {
            System.out.println("能构成");
        } else {
            System.out.println("不能构成");
        }
    }
}

运行示例

示例 1:

输入:

3 4 5

输出:

能构成

示例 2:

输入:

1 2 3

输出:

不能构成