Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查三元组是否为三角形?_Java - Fatal编程技术网

Java 检查三元组是否为三角形?

Java 检查三元组是否为三角形?,java,Java,我的这个解决方案有1次测试失败。 导入java.util.array; 类解决方案{ 公共int解决方案(int[]A){ //用JavaSE8编写代码 如果(A.length=0&&A[i]>A[i+2]-A[i+1]){ 返回1; } /* *我们已经知道一个[i+1]当使用两个值时,您的代码会失败,这两个值的总和大于一个整数可以指定的最大值 在行中,如果(A[i]+A[i+1]>A[i+2])您正在进行加法。如果超过整数限制,您将遇到整数溢出 另一个代码通过从不做这样的加法来避免这种情况

我的这个解决方案有1次测试失败。

导入java.util.array;
类解决方案{
公共int解决方案(int[]A){
//用JavaSE8编写代码
如果(A.length=0&&A[i]>A[i+2]-A[i+1]){
返回1;
}
/*

*我们已经知道一个[i+1]当使用两个值时,您的代码会失败,这两个值的总和大于一个整数可以指定的最大值

行中,如果(A[i]+A[i+1]>A[i+2])
您正在进行加法。如果超过整数限制,您将遇到整数溢出


另一个代码通过从不做这样的加法来避免这种情况。

如果使用的两个值加在一起大于一个整数可以指定的最大值,则代码将失败

行中,如果(A[i]+A[i+1]>A[i+2])
您正在进行加法。如果超过整数限制,您将遇到整数溢出


另一个代码通过从不做这样的加法来避免这种情况。

不等式规则:
它表示:三角形的一条边的长度小于其他两条边的长度之和,大于其他两条边的长度之差

如果我们通过侧面
a+b>c

如果
A[I]+A[I+1]
之和大于
int
的容量,则它成为
溢出的情况,并且
A[I]+A[I+1]<0
=>
A[I]+A[I+1]的结果不大于A[I+2]

这里
if(A[i]+A[i+1]>A[i+2])
在发生溢出时返回
false

因此,更好地使用

if (A[i + 2] >= 0 && A[i + 2] > A[i + 1] - A[i])

or 

if (A[i] >= 0 && A[i] > A[i+2] - A[i+1])

不平等规则:
它表示:三角形的一条边的长度小于其他两条边的长度之和,大于其他两条边的长度之差

如果我们通过侧面
a+b>c

如果
A[I]+A[I+1]
之和大于
int
的容量,则它成为
溢出的情况,并且
A[I]+A[I+1]<0
=>
A[I]+A[I+1]的结果不大于A[I+2]

这里
if(A[i]+A[i+1]>A[i+2])
在发生溢出时返回
false

因此,更好地使用

if (A[i + 2] >= 0 && A[i + 2] > A[i + 1] - A[i])

or 

if (A[i] >= 0 && A[i] > A[i+2] - A[i+1])

请查看失败的测试用例,并调试两种解决方案,以查看差异。@luk2302它没有显示失败测试用例的详细信息。它只是说extreme\u arith\u overflow1 overflow test,3 MAXINTsyes,你认为3 MAXINTs可能指的是什么?@luk2302 dunno。问题在于for循环中的if条件。iv尝试了if(a[i]>=0&&a[i]+A[i+1]>A[i+2])这也不是100%,这很奇怪。请看一看失败的测试用例并调试两个解决方案,看看它们之间的区别。@luk2302它没有显示失败测试用例的详细信息。它只是说极限溢出1溢出测试,3个最大值,你认为3个最大值可能指什么?@luk2302 dunno。问题在于if条件在for循环中,如果(A[i]>=0&&A[i]+A[i+1]>A[i+2])这也不是100%,这很奇怪,“你会遇到未定义的行为”-这在技术上是不正确的,它是定义的行为,意外但定义良好。感谢帮助;我通过(长)A[i]+A[i+1]>(长)A[i+2]修复了它谢谢你指出它。我把它改为简单的“整数溢出”,这应该更准确。“你会遇到未定义的行为”-这在技术上是不正确的,它是定义的行为,出乎意料但定义良好。谢谢你的帮助;我用(长)A[I]+A[I+1]>(长)A[I+2]修复了它谢谢你指出luk2302。我把它改为简单的“整数溢出”,这应该更准确。
if (A[i + 2] >= 0 && A[i + 2] > A[i + 1] - A[i])

or 

if (A[i] >= 0 && A[i] > A[i+2] - A[i+1])