需求是 一个整数数组中有10个数,求加和最大的两个数分别是多少?
我写的代码算到是最大的那个数与自己相加的结果,不是最大的两个数相加,而且求不出那两个数是多少
代码如下:
public class add
{
public static void main(String args[])
{
int a[]= new int [] {84,40,16,3,10,49,28,76,94,100};
int n;
int x=a[0];
int i;
int y=a[0];
int k = x+y; for(n=0;n<=9;n++)
{
for(i=0;i<=9;i++)
if(k<(a[n]+a[i]))
k=a[n]+a[i];
}
System.out.println(k);
我写的代码算到是最大的那个数与自己相加的结果,不是最大的两个数相加,而且求不出那两个数是多少
代码如下:
public class add
{
public static void main(String args[])
{
int a[]= new int [] {84,40,16,3,10,49,28,76,94,100};
int n;
int x=a[0];
int i;
int y=a[0];
int k = x+y; for(n=0;n<=9;n++)
{
for(i=0;i<=9;i++)
if(k<(a[n]+a[i]))
k=a[n]+a[i];
}
System.out.println(k);
或者,排序,然后把第一个数和第二个数相加
int a [] = {84,40,16,3,10,49,28,76,94,100};
getTwoLargestNum(a); }
/**
* @param a 传入数组
*/
public static void getTwoLargestNum(int []a){
int largestNum = 0;//最大数标志
int subNum = 0;//第二大数标志
if (a[0] > a[1]) {//初始化最大的两个数
largestNum = a[0];
subNum = a[1];
}else {
largestNum = a[1];
subNum = a[0];
}
for (int i = 2; i < a.length; i++) {//从第3个数开始循环,不断比较,然后刷新最大两个数的值
if (a[i] > largestNum) {
subNum = largestNum;//最大的数地位下滑,变第二大
largestNum = a[i];
}else if (a[i] > subNum) {
subNum = a[i];
}
}
System.out.println("最大数:"+largestNum);
System.out.println("第二大数:"+subNum);
}}
int[] array = new int[]{
4, 2, 6, 5, 9, 2, 6, 8, 1, 6, 9, 11, 33
};
// 最大数
Integer a = null;
// 次大数
Integer b = null;
if(array.length < 2){
System.out.println("数组太小,无法计算");
return;
}
for(int i : array){
if(a == null){
a = i;
continue;
}
if(b == null){
b = i;
continue;
}
if(b > a){
Integer tmp = a;
a = b;
b = tmp;
}
if(i > a){
// 找到最大值
b = a;
a = i;
}else if(i > b){
// 找到次大值
b = i;
}
}
System.out.println("最大值 = " + a);
System.out.println("次大值 = " + b);
System.out.println(a.intValue() + b.intValue());
}
public static void main(String[] args) {
int[] arr=new int[]{3,4,2,9,6};
sort(arr);
}
/**
* 排序
* @param arr
*/
public static void sort(int[] arr){
StringBuilder sb=new StringBuilder();
for(int ele:arr){
sb.append(ele).append(",");
}
System.out.println("数组为:"+sb.deleteCharAt(sb.length()-1));
int len=arr.length;
Arrays.sort(arr);
System.out.println(arr[len-1]+"和"+arr[len-2]+"相加的和最大,为:"+(arr[len-1]+arr[len-2]));
}
Integer[] datas = new Integer[]{84,40,16,3,10,49,28,76,94,100};
if (datas != null && datas.length > 1) {
List<Integer> results = Arrays.asList(datas);
Collections.sort(results);
System.out.println("maxNum1:" + results.get(results.size() -1));
System.out.println("maxNum2:" + results.get(results.size() -2));
}控制台输出
maxNum1:100
maxNum2:94