给定三条边a\b\c,请你判断一下能不能组成一个三角形

题目:给定三条边a\b\c,请你判断一下能不能组成一个三角形
输入描述:

输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)

输出描述:

对应每一组数据,如果它们能组成一个三角形,则输出"Yes";否则,输出"No"。

实现思路:

1.因为要输入多组数据,所以将所有代码放在while循环里。

2.因为输入的数字可能是超大整数,所以直接定义BigInteger保存超大整数

3.找出最大值、最小值、中间值 ,由于是引用数据类型,所以用compareTo进行三元运算

4.比较:若Max<(Min+Mid),则可以说明任意两边之和大于第三边

java 复制代码
package com.ztt.Demo01;

import java.math.BigInteger;
import java.util.Scanner;
//给定三条边a\b\c,请你判断一下能不能组成一个三角形
// 1 <= a\b\c <= 10^100

public class demo01 {

	public static void main(String[] args) {
		//定义BigInteger保存超大整数
		Scanner input=new Scanner(System.in);
		BigInteger a=null;
		BigInteger b=null;
		BigInteger c=null;
		
		while(input.hasNext()) {
		 a=input.nextBigInteger();
		 b=input.nextBigInteger();
		 c=input.nextBigInteger();
		 
		 //1.找出max、 min、mid
		 // max
		 // a > b ? (a > c ? a : c) : (b > c ? b : c)
		BigInteger max=(a.compareTo(b)>=0)?(a.compareTo(c)>0 ?a:c):(b.compareTo(c)>0 ?b:c);
		
		// min
		// a < b ? (a < c ? a : c) : (b < c ? b : c)
		BigInteger min=(a.compareTo(b)<=0)?(a.compareTo(c)<0 ?a:c):(b.compareTo(c)<0 ?b:c);
		
		//mid
		//(a+b+c)-max-min
		BigInteger mid=a.add(b).add(c).subtract(max).subtract(min);
		
		//(max<(min+mid))? "YES" : "NO";
		String ret=max.compareTo(min.add(mid))<0 ? "YEA":"NO";
		System.out.println(ret);
		}
	}

}

运行结果:

java 复制代码
1 2 3
NO

5 12 13
YES
相关推荐
葡萄成熟时 !8 小时前
JAVA 常用API学习笔记
java·笔记·学习
鹿角片ljp8 小时前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
鼎艺创新科技8 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
剩下了什么8 小时前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
Rain的Java大神之路8 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
指尖时光.9 小时前
Three.js 超全入门综合案例
开发语言·javascript·ecmascript
暴力求解9 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
吴声子夜歌9 小时前
Java面试题——基础(一)
java·开发语言
小庞在加油10 小时前
WinDbg实战:QT/跨平台项目死锁与无响应问题排查指南
开发语言·qt·windbg·工具
南城以南溫暖如初14710 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue