繁体   English   中英

减去单个数组中的所有元素 Java

[英]Subtracting all elements in single array Java

嗨,我无法将一个数组元素减去下一个元素以获得正确答案。 数组的值由用户给出。

示例:如果用户要输入 3 个数字,即 10、8、1 10-8-1 = 1

int numberOT = 0;
int total =0;
System.out.println("Enter Number of times: ");
numberOT =in.nextInt();

int number[] = new int [numberOT];



for(int i = 0; i<numberOT; i++)
{
    System.out.println("Enter Number: ");
    number[i] = in.nextInt();
}
for(int t =0; t<number.length-1; t++)
{
  total = number[t] - number[t+1];
}
System.out.println("total: " + total);

将第二个循环更改为:

total = number[0];
for (int i=1; i<number.length; i++) {
    total -= number[i];
}

您想从第一个数组项中减去剩余的数组项。 因此,开始的total应该等于第一项,并且在循环中从total中减去每个后续项(从索引1开始)。

请记住,数组中的项目数必须等于或大于 2。

这一行是完全错误的: total = number[t] - number[t+1]; 和最后一个循环一样

total = number[1] - number[2]这将等同于total = 8 - 1 = 7这是完全错误的,因为您必须累积总变量。

所以如上所述,完整的正确答案代码是:

    import java.util.Scanner;

    public class Main
    {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);

            int numberOT = 0;
            int total =0;
            System.out.println("Enter Number of times: ");
            numberOT =in.nextInt();

            int number[] = new int [numberOT];

            for(int i = 0; i<numberOT; i++)
            {
                System.out.println("Enter Number: ");
                number[i] = in.nextInt();
            }
            total = number[0];
            for (int i=1; i<number.length; i++) {
                total = total - number[i];
            }
            System.out.println("total: " + total);

        }
    }

这是 output 的图像:

[在此处输入图像描述 ][1]

这是一个使用流的单列(计算方式)。 取第一个元素 stream 数组跳过第一个元素并减去剩余的总和。

int[] arr = { 10, 8, 3, 1 };
int sum = arr[0] - IntStream.of(arr).skip(1).sum();
System.out.println(sum);

但无论您如何操作,根据值的大小和数组的长度,您都有可能发生int上溢或下溢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM