java 程序问题~~

来源:百度知道 编辑:UC知道 时间:2024/06/25 16:57:14
本人为java菜鸟 想产生3个随机数判断是否能组成三角型~~~~~~~

import java.lang.Math;
public class java{
public static void main(String[] args) {
int []zu = new int[3];
double c,s;
for(int i=0; i<zu.length; i++)
{zu[i]=(int)(Math.random()*100);}
if ((zu[0]+zu[1]>zu[2])&&(zu[1]+zu[2]>zu[0]))
{
c=((zu[0]+zu[1]+zu[2])/2);
s=Math.sqrt(c*(c-zu[0])*(c-zu[1])*(c-zu[2]));
System.out.printf("三边的长度是: %d %d %d 它的面积是: %d",zu[0],zu[1],zu[2],s);
}
else
{System.out.printf("产生三边的长度是: %d %d %d 它们不能组成三角形",zu[0],zu[1],zu[2]); }

}
}

产生错误:

三边的长度是: 41 94 52 它的面积是: Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Double
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.pri

改成这样的:

import java.lang.Math;

public class Print {
public static void main(String[] args) {
int[] zu = new int[3];
double c, s;
for (int i = 0; i < zu.length; i++) {
zu[i] = (int) (Math.random() * 100);
}
if ((zu[0] + zu[1] > zu[2]) && (zu[1] + zu[2] > zu[0])) {
c = ((zu[0] + zu[1] + zu[2]) / 2);
s = Math.sqrt(c * (c - zu[0]) * (c - zu[1]) * (c - zu[2]));
System.out.printf("三边的长度是: %d %d %d 它的面积是: %f", zu[0], zu[1],
zu[2], s);
} else {
System.out.printf("产生三边的长度是: %d %d %d 它们不能组成三角形", zu[0], zu[1],
zu[2]);
}

}
}

if的条件不完全。任意二边之和大于第三边才满足三角形定义。

格式转换问题:浮点型数要用 %f