我如何在本计划中打印最大金额?

时间:2014-03-10 14:03:01

标签: java

package Message; 
public class Example_R { 
public static void main (String args[])  
    int n=1;
    int input[]={1, 2, 1, 3, 4};         
    for (int j=0; j<=4; j++) {
        int Add = 0;
        for (int i=0; i<=4; i++)    {
           if (input[j] !=input[i]) {
        Add+=input[i];
           }
        }
                System.out.println(Add);
            }
         }
 }

此程序的输出为:9 9 9 8 7数组中所有其他元素的总和,不等于该元素。 现在我想扩展程序,以便我可以打印任何元素的最大总和,(在这种情况下,9是最大的总和。)你有什么建议吗?对于此分配,我不能使用其他数组,hashmap等。 Arrays.sort(..)

5 个答案:

答案 0 :(得分:2)

提示:使用保持“迄今为止达到的最大金额”的变量。您将在计算新总和时更新它。

您需要找到“我如何以及何时初始化此变量?”和“如何更新它?”

答案 1 :(得分:0)

您需要一个临时变量来保存当前最高的数字。

int temp = intArray[0]
for(int i : intArray)
{
if(i > temp)
temp = i;
}

答案 2 :(得分:0)

您可能想要创建一个单独的方法,将“input []”数组传递给(左侧作为练习)。但是在考虑这样的问题时,首先要考虑如何用英语(或者你的母语)来做。记下该策略(“算法”),然后在Java中实现。

public class Example_R {
public static void main(String args[]) {
    int input[] = { 1, 2, 1, 3, 4 };
    int largestSum = 0;
    int currentSum;

    for (int j = 0; j < input.length; j++) {
        currentSum = 0;
        for (int i = 0; i < input.length; i++) {
            if (input[j] != input[i]) {
                currentSum += input[i];
            }
        }
        System.out.println("Sum of all values not equal to " + input[j]
                + " is: " + currentSum);
        if (j == 0) {
            largestSum = currentSum;
        } else {
            if (largestSum < currentSum) {
                largestSum = currentSum;
            }
        }
    }
    System.out.println("The largest overall sum was " + largestSum);
}
}

答案 3 :(得分:0)

试试这个:

int n = 1,sum=0;
int[] input = { 1, 2, 1, 3, 4 };
for (int j = 0; j <= 4; j++){
     int Add = 0;
     for (int i = 0; i <= 4; i++){
          if (input[j] != input[i])
              Add += input[i];    
     }
     if (sum < Add)
         sum = Add;
}

每次完成第二次循环后,如果“sum”小于当前的“add”值,则更新“sum”。

答案 4 :(得分:-1)

您可以使用Comparable类型的变量并使用compareTo()方法。

  1. one.compareTo(two)将返回&gt;如果one > two
  2. ,则为0
  3. one.compareTo(two)将返回&lt;如果one < two
  4. ,则为0 如果one.compareTo(two)one相等,则
  5. two将返回0

    遍历数组,将当前索引与先前的索引进行比较,并更新保存currentLargest值的变量。