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(..)
答案 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()
方法。
one.compareTo(two)
将返回&gt;如果one > two
one.compareTo(two)
将返回&lt;如果one < two
one.compareTo(two)
和one
相等,则two
将返回0
醇>
遍历数组,将当前索引与先前的索引进行比较,并更新保存currentLargest值的变量。