[英]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.