【问题标题】:Java: Array with loopJava:带循环的数组
【发布时间】:2011-12-02 23:48:09
【问题描述】:

我需要创建一个包含 100 个数字 (1-100) 的数组,然后计算它的数量(1+2+3+4+..+100 = sum)。

我不想手动将这些数字输入到数组中,100 个点会花费一些时间并且会花费更多代码。

我正在考虑使用变量 ++ 直到 100,然后计算它们的总和。不知道具体怎么写。 但重要的是它在数组中,所以我以后也可以说,“数组 55 是多少”,我可以很容易地看到它。

【问题讨论】:

    标签: java arrays loops


    【解决方案1】:

    方法如下:

    // Create an array with room for 100 integers
    int[] nums = new int[100];
    
    // Fill it with numbers using a for-loop
    for (int i = 0; i < nums.length; i++)
        nums[i] = i + 1;  // +1 since we want 1-100 and not 0-99
    
    // Compute sum
    int sum = 0;
    for (int n : nums)
        sum += n;
    
    // Print the result (5050)
    System.out.println(sum);
    

    【讨论】:

    • 正是我想要的,也感谢您的描述。
    【解决方案2】:

    如果您只想计算 1,2,3...n 的总和,那么您可以使用:

     int sum = (n * (n + 1)) / 2;
    

    【讨论】:

      【解决方案3】:
      int count = 100;
      int total = 0;
      int[] numbers = new int[count];
      for (int i=0; count>i; i++) {
          numbers[i] = i+1;
          total += i+1;
      }
      // done
      

      【讨论】:

        【解决方案4】:

        我不确定您希望生成的数组采用哪种结构,但以下代码将满足我的认为您的要求:

        int sum = 0;
        int[] results = new int[100];
        for (int i = 0; i < 100; i++) {
          sum += (i+1);
          results[i] = sum;
        }
        

        为您提供循环中每个点的总和数组[1, 3, 6, 10...]

        【讨论】:

        • 这会抛出 i=100 的数组越界异常。
        • 啊,是的。更正了循环索引和插入。
        【解决方案5】:

        填充数组:

        int[] numbers = new int[100];
        for (int i = 0; i < 100; i++) {
            numbers[i] = i+1;
        }
        

        然后总结一下:

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

        或者简而言之,如果你想要从 1 到 n 的总和:

        ( n ( n +1) ) / 2

        【讨论】:

          【解决方案6】:

          如果您的数字数组始终以 1 开头并以 X 结尾,那么您可以使用以下公式: 总和 = x * (x+1) / 2

          从 1 到 100,总和为 100 * 101 / 2 = 5050

          【讨论】:

            【解决方案7】:

            这实际上是公差为1的算术级数的总和。所以这是自然数和的一个特例。只需一行代码即可轻松完成。

            int i = 100;
            // Implement the fomrulae n*(n+1)/2
            int sum = (i*(i+1))/2;
            System.out.println(sum);
            

            【讨论】:

              【解决方案8】:

              int[] nums = 新的int[100];

              int sum = 0;

              // 使用for循环填充数字 for (int i = 0; i

              { 
                   nums[i] = i + 1;
                  sum += n;
              }
              

              System.out.println(sum);

              【讨论】:

              • @normalocity:: 你的代码中有一个错误,因为你声明了一个由 100 个单元组成的数组并试图访问它的第 101 个单元。那么当循环到达 i=100 时会发生什么。 U 将访问 results[100],这是从 0 开始的第 101 个单元格。 int sum = 0; int[] 结果 = 新 int[100]; for (int i = 1; i
              【解决方案9】:

              数组已声明但未初始化值,如果您想通过迭代循环插入值,此代码将起作用。

              Public Class Program
              {
              
              public static void main(String args[])
              
              {
               //Array Intialization
               int my[] = new int[6];
              
               for(int i=0;i<=5;i++)
              
              {
              
              //Storing array values in array
              my[i]= i;
              
              //Printing array values
              
              System.out.println(my[i]);
              
              }
              
              }
              
              }
              

              【讨论】:

              • 请同时添加您的解决方案的简短描述。这将帮助用户了解您的解决方案为何有效。
              • 添加了解决方案的描述.. 感谢 Mayank
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-01-21
              • 2021-02-26
              • 1970-01-01
              • 2014-03-22
              • 2017-05-21
              • 2020-03-02
              • 2016-08-08
              相关资源
              最近更新 更多