数组和For循环的Java应用

数组和For循环的Java应用,java,arrays,for-loop,java.util.scanner,Java,Arrays,For Loop,Java.util.scanner,问题是: 编写一个程序,将十个整数读入一个数组,然后 计算值数组的总和,最大值除外。 (提示:求和和和的最大值之间的差。) 阵列) 这是您必须实现的给定示例: 下面的程序是我个人的尝试: 这个程序到底出了什么问题?有人能帮我找到它并教我如何解决它吗?谢谢:)第一个和=0-max;是错误的,因为max还不知道。你需要在找到最大值后再做 for (int i = 0; i < x.length; i++) { sum = sum + x[i]; } sum -= max; f

问题是:

编写一个程序,将十个整数读入一个数组,然后 计算值数组的总和,最大值除外。 (提示:求和和和的最大值之间的差。) 阵列)


这是您必须实现的给定示例:


下面的程序是我个人的尝试:



这个程序到底出了什么问题?有人能帮我找到它并教我如何解决它吗?谢谢:)

第一个和=0-max;是错误的,因为max还不知道。你需要在找到最大值后再做

for (int i = 0; i < x.length; i++) {
    sum = sum + x[i];
}

sum -= max;
for(int i=0;i
您在不知不觉中减去了最大值。移动
int sum=0-max在寻找它的循环之后。

代码的问题是您正在对
x[0]
值进行子分级(在初始值时假定最大值)


甚至你也可以通过单for循环实现

int max = x[0];
int sum = 0;

for (int i = 0; i < x.length; i++) {
    if(x[i] > max) {
        max = x[i];
    }
    sum = sum + x[i];
}
sum -=max;
int max=x[0];
整数和=0;
对于(int i=0;imax){
max=x[i];
}
总和=总和+x[i];
}
总和-=最大值;
移动此行:

int sum = -max;
在查找最大值的循环之后

导入java.util.Scanner;
import java.util.Scanner;

public class SumWithoutMax {

public static void main(String[] args) {

Scanner in = new Scanner (System.in);       
System.out.print("Please input 10 integers: ");
int [] x = new int [10];
for (int i = 0; i < x.length; i++) {
    x[i] = in.nextInt();
}

int max = x[0];
int sum = 0;

for (int i = 0; i < x.length; i++) {
    if(x[i] > max) {
        max = x[i];
    }
}

for (int i = 0; i < x.length; i++) {
    sum = sum + x[i];
}

sum = sum - max;
System.out.println("Sum without the max: " +sum);
}
}
公共级SumWithoutMax{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); 系统输出打印(“请输入10个整数:”); int[]x=新的int[10]; 对于(int i=0;imax){ max=x[i]; } } 对于(int i=0;i

当循环找到最大值时。

在JAVA 8中可能的答案是:

Integer sum = Arrays.asList(3,4,1,9,2,10,8,6,7,5).stream().sorted(Comparator.reverseOrder()).skip(1).reduce(
               0,(a, b) -> a + b);

顺便说一下,为了可读性,它应该是
sum=-max(更糟的方式)或
总和-=最大值最后(更好的一个)各位,首先感谢你们对我的问题给出了详细而精彩的回答。但是请不要对这篇文章投“否决票”,因为我和Java的接触才一个多星期,所以我想我问这些毫无意义的问题是合理的。谢谢你的理解。
int sum = -max;
import java.util.Scanner;

public class SumWithoutMax {

public static void main(String[] args) {

Scanner in = new Scanner (System.in);       
System.out.print("Please input 10 integers: ");
int [] x = new int [10];
for (int i = 0; i < x.length; i++) {
    x[i] = in.nextInt();
}

int max = x[0];
int sum = 0;

for (int i = 0; i < x.length; i++) {
    if(x[i] > max) {
        max = x[i];
    }
}

for (int i = 0; i < x.length; i++) {
    sum = sum + x[i];
}

sum = sum - max;
System.out.println("Sum without the max: " +sum);
}
}
  int sum = -max;
Integer sum = Arrays.asList(3,4,1,9,2,10,8,6,7,5).stream().sorted(Comparator.reverseOrder()).skip(1).reduce(
               0,(a, b) -> a + b);