public class Avg{ public static void main(String[] args){ int[] num = new int[]{5,7,11,23,43,67}; int sum = 0; for (int i = 0; i < num.length; i++) { sum += num[i]; } System.out.println(sum/num.length); } }
public class TestAVG { public static int getAV(int[] a){ int sum = 0; for(int i = 0; i < a.length; i++){ sum += a[i]; } int avg = sum / a.length; int minbetween = Math.abs(avg - a[0]); int re = a[0]; for(int i = 0; i < a.length; i++){ if(minbetween > Math.abs(avg - a[i])){ minbetween = Math.abs(avg - a[i]); re = a[i]; } } return re; }
public static void main(String[] args) { int[] a = {5,7,11,23,43,67}; System.out.println(getAV(a)); } }不过我这个方法只能返回前面一个与平均值最接近的数字,如果有多个就不行了,而且我感觉这个方法不够简洁,不过简单一点,呵呵!~
public class Avg{ public static void main(String[] args){ int[] num = new int[]{5,7,11,23,43,67}; int sum = 0; for (int i = 0; i < num.length; i++) { sum += num[i]; } double avg=(sum/num.length*1l); double[] diff=double[]{0,0,0,0,0,0}; for (int i = 0; i < num.length; i++) { diff[i]=num[i]-avg; } //接下来就是从diff中求最小值,简单吧。 } }
你这个乘以11是做什么用的呢 能不能吧diff中求最小值都写出来呢
汗,最后四舍五入不应该这么写,改了一下 import java.math.BigDecimal; import java.math.MathContext;public class Avg { public static void main(String[] args) { int[] num = new int[] { 5, 7, 11, 23, 43, 67 }; int sum = 0; for (int i = 0; i < num.length; i++) { sum += num[i]; } System.out.println(new BigDecimal(sum / num.length, new MathContext(BigDecimal.ROUND_HALF_UP))); } }
public static void main(String[] args) { int[] i = new int[] { 5, 7, 11, 23, 43, 67 }; double temp = 0; int[] k = new int[6]; int[] s = new int[6]; int[] si = new int[6]; int c = 0, c1 = 0; int aaa = 0, bbb = 0; int ddd = 0;// 最近的值 for (int j = 0; j < i.length; j++) { temp += i[j]; } temp = temp / 6; System.out.println(temp); for (int j = 0; j < i.length; j++) { k[j] = (int) (i[j] - temp); } for (int j = 0; j < k.length; j++) { if (k[j] < 0) { s[c] = k[j]; c++; } else { si[c1] = k[j]; c1++; } } Arrays.sort(s); Arrays.sort(si); for (int j = s.length; j > 0; j--) { if (s[j - 1] != 0) { aaa = s[j - 1]; break; } } for (int j = 0; j < si.length; j++) { if (si[j] != 0) { bbb = si[j]; break; } } if (Math.abs(aaa) > Math.abs(bbb)) { ddd = (int) (temp - bbb); } else { ddd = (int) (temp + aaa); } System.out.println(ddd); } 我写的更复杂 有没有简单的方法呢
这个才是楼主真正想要得吧 import java.math.BigDecimal; import java.math.MathContext;public class Avg { public static void main(String[] args) { int[] num = new int[] { 5, 7, 11, 23, 43, 67 }; int sum = 0; for (int i = 0; i < num.length; i++) { sum += num[i]; } int avg = new BigDecimal(sum / num.length, new MathContext(BigDecimal.ROUND_HALF_UP)).intValue(); int result = 0; int minDiff = Integer.MAX_VALUE; for (int i = 0; i < num.length; i++) { int diff = new BigDecimal(num[i] - avg).abs().intValue(); if (diff < minDiff) { minDiff = diff; result = num[i]; } } System.out.println(result); } }
public class Avg{
public static void main(String[] args){
int[] num = new int[]{5,7,11,23,43,67};
int sum = 0;
for (int i = 0; i < num.length; i++)
{
sum += num[i];
}
System.out.println(sum/num.length);
}
}
int sum = 0;
for(int i = 0; i < a.length; i++){
sum += a[i];
}
int avg = sum / a.length;
int minbetween = Math.abs(avg - a[0]);
int re = a[0];
for(int i = 0; i < a.length; i++){
if(minbetween > Math.abs(avg - a[i])){
minbetween = Math.abs(avg - a[i]);
re = a[i];
}
}
return re;
}
public static void main(String[] args) {
int[] a = {5,7,11,23,43,67};
System.out.println(getAV(a));
}
}不过我这个方法只能返回前面一个与平均值最接近的数字,如果有多个就不行了,而且我感觉这个方法不够简洁,不过简单一点,呵呵!~
public class Avg{
public static void main(String[] args){
int[] num = new int[]{5,7,11,23,43,67};
int sum = 0;
for (int i = 0; i < num.length; i++)
{
sum += num[i];
}
double avg=(sum/num.length*1l);
double[] diff=double[]{0,0,0,0,0,0};
for (int i = 0; i < num.length; i++)
{
diff[i]=num[i]-avg;
}
//接下来就是从diff中求最小值,简单吧。
}
}
能不能吧diff中求最小值都写出来呢
import java.math.BigDecimal;
import java.math.MathContext;public class Avg
{
public static void main(String[] args)
{
int[] num = new int[] { 5, 7, 11, 23, 43, 67 };
int sum = 0;
for (int i = 0; i < num.length; i++)
{
sum += num[i];
}
System.out.println(new BigDecimal(sum / num.length, new MathContext(BigDecimal.ROUND_HALF_UP)));
}
}
double temp = 0;
int[] k = new int[6];
int[] s = new int[6];
int[] si = new int[6];
int c = 0, c1 = 0;
int aaa = 0, bbb = 0;
int ddd = 0;// 最近的值
for (int j = 0; j < i.length; j++) {
temp += i[j];
}
temp = temp / 6;
System.out.println(temp);
for (int j = 0; j < i.length; j++) {
k[j] = (int) (i[j] - temp);
}
for (int j = 0; j < k.length; j++) {
if (k[j] < 0) {
s[c] = k[j];
c++;
} else {
si[c1] = k[j];
c1++;
}
}
Arrays.sort(s);
Arrays.sort(si);
for (int j = s.length; j > 0; j--) {
if (s[j - 1] != 0) {
aaa = s[j - 1];
break;
}
}
for (int j = 0; j < si.length; j++) {
if (si[j] != 0) {
bbb = si[j];
break;
}
}
if (Math.abs(aaa) > Math.abs(bbb)) {
ddd = (int) (temp - bbb);
} else {
ddd = (int) (temp + aaa);
}
System.out.println(ddd);
}
我写的更复杂 有没有简单的方法呢
import java.math.BigDecimal;
import java.math.MathContext;public class Avg
{
public static void main(String[] args)
{
int[] num = new int[] { 5, 7, 11, 23, 43, 67 };
int sum = 0;
for (int i = 0; i < num.length; i++)
{
sum += num[i];
}
int avg = new BigDecimal(sum / num.length, new MathContext(BigDecimal.ROUND_HALF_UP)).intValue();
int result = 0;
int minDiff = Integer.MAX_VALUE;
for (int i = 0; i < num.length; i++)
{
int diff = new BigDecimal(num[i] - avg).abs().intValue();
if (diff < minDiff)
{
minDiff = diff;
result = num[i];
}
}
System.out.println(result);
}
}