用Java编写,在给出的数字里面找三个数字的和等于或者最接近513.91的。在线等,用上数组最好。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java编写,在给出的数字里面找三个数字的和等于或者最接近513.91的。在线等,用上数组最好。相关的知识,希望对你有一定的参考价值。

数据大家可以先自己定。谢谢大家了。在线。

参考技术A 给出的数字里面是否包含负数?

如果都是double类型且是正数 ,那么 查找起来就很方便了,

思路:用已知目标数513.91 (姑且用G表示),
在 给定的数字里 循环查找 ,用G减去每一个数来比较,最初减去后得出最小值的数,存贮起来,并且将原数组中的这个数去掉,此时原数组长度就减 1 了, 然后按此方法重复查第2和3个数 即可。。。
参考技术B 怎么没人回答。。三重循环加比大小。。。先占个位置,给你写代码去~

随便写了点。。感觉好乱,不完善,凑合看吧。。

public class text
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
double a[] = new double[3];
a[0] = 150.0;
a[1] = 150.0;
a[2] = 150.0;
double m = 0.0, p = 0.0, q = 0.0;
double min = 0.0;
// 数据你自己给
for (int i = 0; i < 3; i++)
for (int j = i + 1; j < 3; j++)
for (int k = j + 1; k < 3; k++)
if (i == 0 || min > Math.abs(a[i] + a[j] + a[k] - 513.91))
min = Math.abs(a[i] + a[j] + a[k] - 513.91);
m = a[i];
p = a[j];
q = a[k];


System.out.println(m);
System.out.println(p);
System.out.println(q);

追问

嗯。好的,谢谢了。

追答

那个if中i==0换成k==2吧。。就是第一次进来的时候给min一个初始值,或者在外部定义min的时候直接写min=a[0]+a[1]+a[2]。。我也新手,大家一起交流~

本回答被提问者采纳
参考技术C public class Hash
public static void main(String[] args)
double[] doubleNumber = 233, 235, 34, 343 ,513.91,0,0;
double sum = 0, d = 0;
for (int i = 0; i < doubleNumber.length; i++)
for (int j = 0; j < doubleNumber.length ; j++)
for (int k = 0; k < doubleNumber.length ; k++)
if (k == i || k == j || j == i)
continue;
else
d = doubleNumber[i] + doubleNumber[j] + doubleNumber[k];
if ((Math.abs(sum - 513.91)) >= Math.abs(d-513.91))
sum = d;
System.out.println("Number"+i+" "+j+" "+k+" "+"'s sum is"+d);





System.out.print(sum+"是最近的3个数的和");
参考技术D 这个可以吗,应先 min = Math.abs(a[0] + a[1] + a[2] - 513.91)吧? 第5个回答  2012-09-27 学习学习

以上是关于用Java编写,在给出的数字里面找三个数字的和等于或者最接近513.91的。在线等,用上数组最好。的主要内容,如果未能解决你的问题,请参考以下文章

求java 程序 要求:读取txt文件,文件里面有很多行数字,然后输出每一行里面,各位数字的和 例

Java面试题:在一个递增的数组里面,找出任意两个数的和等于100,编写程序输出这些数对,可以假设数组中不存在重复元素

pat甲级 1001 A+B Format

如何在一堆数字中找出几个数,这几个数的和能够相加得一个固定值

Java 集合数组 任意个数数字相加等于一个指定的数

B1056 组合数的和 (15分)