我开始学习C#并且正在编写一个程序,首先要求用户输入数字列表。当用户完成输入输入时,我想对输入中用户提供的每个数字进行平方。用户输入的示例是2 3 5
。
以下是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program
{
class Third
{
public static void Main()
{
Console.WriteLine("Enter how much numbers");
int howMuch = int.Parse(Console.ReadLine());
int[] num = new int[howMuch];
int sum = 0;
for (int i = 0; i < num.Length; i++ )
{
sum = num[i] * num[i]; // this is what i did but it does not work?
}
Console.WriteLine(sum);
Console.ReadLine();
}
}
}
具体来说,我首先想要在numbers
数组中捕获用户输入。然后我想对已创建的num
数组中的每个数字进行平方。我的计划出了什么问题?
答案 0 :(得分:1)
首先,您需要从用户那里获得输入并填充数组:
for (int i = 0; i < num.Length; i++)
{
//TODO: Look into int.TryParse method to validate user input
num[i] = int.Parse(Console.ReadLine());
}
而不是在第二个循环中覆盖sum
使用sum += num[i] * num[i]
。或者,如果您要查找所有数字的乘法,请使用sum = sum * num[i];
并从1
开始求和。
答案 1 :(得分:1)
您的代码未初始化数组 - 我添加了
Console.WriteLine("Enter number " + (i + 1));
num[i] = int.Parse(Console.ReadLine());
为此。
还更正了摘要:sum += ...
for (int i = 0; i < num.Length; i++ )
{
Console.WriteLine("Enter number " + (i + 1));
num[i] = int.Parse(Console.ReadLine());
sum += (num[i] * num[i]);
}
答案 2 :(得分:0)
看看你在循环中做的数学。
sum = num[i] * num[i];
每次通过时,您设置的总和等于索引整数的平方。
以第2,3,5次为例,第一次通过循环,你将设置sum = 2 * 2(或4),第二次通过,你设置sum = 3 * 3(或9)和最后一次总和= 5 * 5(或25)。你真正想要的是2 * 3 * 5,对吧?
您需要做的就是初始化int sum = 1
,并将循环中的语句更改为:
sum = sum * num[i];
这将在第一次产生sum = 1 * 2,第二次产生sum = 2 * 3,第三次产生sum = 4 * 5。
答案 3 :(得分:0)
我假设你要做的总和(如果输入是2,3,5)是2 * 3 * 5。如果是这种情况,那么命名变量sum
有点误导,因为这往往意味着2 + 3 + 5。
您将数字相乘的for
循环有
sum = num[i]*num[i];
其中,在示例之后,当i == 0时,将执行sum = 2*2
,然后在增加循环时覆盖它,因此sum
将以25(5 * 5)结束,并折扣所有其他值。
如果您确实要对数字的平方求和,请将sum
初始化为0,然后使用该行
sum += num[i] * num[i];
会奏效。话虽如此,除非您特别需要以任何理由存储它,否则在读取值时处理这些值会更好,因为程序将减少1 for
个循环。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program
{
class Third
{
public static void Main()
{
Console.WriteLine("Enter how much numbers");
int howMuch = int.Parse(Console.ReadLine());
int[] num = new int[howMuch];
for(int i = 0; i < howMuch; ++i)
{
//This is assuming that the user will enter an int value.
//Ideally, verify this using int.TryParse or something similar.
num[i] = int.Parse(Console.ReadLine());
}
int sum = 1; //Set to 1 so that the PRODUCT is not always zero
for (int i = 0; i < num.Length; i++ )
{
sum *= num[i]; //Multiply the value
}
Console.WriteLine(sum);
Console.ReadLine();
}
}
如果输入为2,3,5,则总和的值为30
答案 4 :(得分:0)
这可能会更好一些,尽管还有很多可以整理的东西!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program
{
class Third
{
public static void Main()
{
Console.WriteLine("Enter how many numbers");
int howMuch = int.Parse(Console.ReadLine());
int[] num = new int[howMuch];
int sum = 1;
for(int i=0;i<num.Length;i++) //allows you to fill the array
{
Console.WriteLine("Please enter an integer");
sum *= int.Parse(Console.ReadLine()); // this will now multiply the value to sum, as your comment suggests
}
Console.WriteLine(sum);
Console.ReadLine();
}
}
}
修改强>
sum *= num[i];
应该做你想做的事!
答案 5 :(得分:-1)
用以下代码替换Main()中的代码: -
Console.WriteLine("Enter how much numbers");
int howMuch = int.Parse(Console.ReadLine());
int[] num = new int[howMuch];
Console.WriteLine("Enter numbers");
int sum = 0;
for (int i = 0; i < num.Length; i++ )
{
num[i] = int.Parse(Console.ReadLine());
sum += num[i] * num[i]; // this is what i did but it does not work?
}
Console.WriteLine(sum);
Console.ReadLine();