繁体   English   中英

如何解决从 javascript 到 c# 的问题

[英]How to solve problem from javascript to c#

我正在做一个编码练习,即:

让 function ThreeFiveMultiples(num) 返回 num 以下的所有 3 和 5 的倍数之和。 例如:如果 num 为 10,则 3 和 5 在 10 以下的倍数是 3、5、6 和 9,将它们相加得到 23,因此您的程序应该返回 23。传递的 integer 将介于1 和 100。

我不确定我的 c# 解决方案中的错误在哪里,我想帮助解决这个问题,谢谢。

我在 C# 中尝试过这个,但得到错误: System.IndexOutOfRangeException: Index was outside the bounds of the array

using System;
using System.Linq;

class MainClass {

  public static int ThreeFiveMultiples(int num) {

    //var total = 0;

    int[] array = new int[] {};

    for(var i = num-1; i>1; i--)
    {
      if(i%5 == 0 || i%3 == 0)
      {
        array[i] = i;
      }
    }

    return array.Sum();
  }

这是 javascript 中的解决方案

function ThreeFiveMultiples(num) { 
    var arr = [];
    var tot=0;
   for(var i=num-1; i>1; i--){
        if(i%5===0 || i%3===0){
            arr.push(i);
        }
    }
    for(var i=0; i<arr.length; i++){
        tot = tot+ arr[i];
    }
    return tot;
}

在 javascript 中,array.push 将增加数组的大小并添加项。

这不适用于 C#。 如果需要,请改用 List,它可以转换为数组。

public static int ThreeFiveMultiples(int num) {

    List<int> numbers = new List<int>();

    for(var i = num-1; i>1; i--)
    {
        if(i%5 == 0 || i%3 == 0)
        {
            numbers.Add(i);
        }
   }

    // Turn it into an array, for the hell of it.
    int[] arr = numbers.ToArray();

    return numbers.Sum(i => i);
}

暂无
暂无

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

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