C# 获取用户输入并将其添加到C的数组中#
我试图从用户那里获得5次输入,并将这些值添加到marks数组中 然后,它将计算平均值并相应地打印正片或负片。但是,我无法从用户那里获取输入,它只是打印“输入5个元素”。从用户获得输入后,如何将它们添加到标记数组中?任何提示都会有帮助C# 获取用户输入并将其添加到C的数组中#,c#,arrays,console,user-input,C#,Arrays,Console,User Input,我试图从用户那里获得5次输入,并将这些值添加到marks数组中 然后,它将计算平均值并相应地打印正片或负片。但是,我无法从用户那里获取输入,它只是打印“输入5个元素”。从用户获得输入后,如何将它们添加到标记数组中?任何提示都会有帮助 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; class Progr
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
double average =0;
int [] marks = new int[] { };
for (int a = 0; a < 5; a++){
Console.WriteLine("Enter 5 elements:");
string line = Console.ReadLine();
Console.WriteLine(line);
}
for (int i = 0; i < marks.Length; i++){
average = marks.Average();
}
if(average>0){
Console.WriteLine("Positive");
}else{
Console.WriteLine("Negative");
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text.RegularExpressions;
班级计划
{
静态void Main()
{
双平均=0;
int[]标记=新的int[]{};
对于(int a=0;a<5;a++){
Console.WriteLine(“输入5个元素:”);
string line=Console.ReadLine();
控制台写入线(行);
}
for(int i=0;i0){
控制台。写线(“正”);
}否则{
控制台。写入线(“负数”);
}
}
}
遵循
由于使用的是整数数组,并且控制台的输入是字符串值,因此需要使用Parse()方法对其进行转换。例如
string words = "83";
int number = int.Parse(words);
编辑:在解析中使用字符串变量。编辑了我的答案,以说明在不使用for循环的情况下解决问题的方法
class Program
{
const int numberOfMarks = 5;
static void Main()
{
List<int> marks = new List<int>();
Enumerable.Range(1, numberOfMarks)
.ForEach((i) => {
Console.Write($"Enter element {i}:");
marks.Add(int.TryParse(Console.ReadLine(), out var valueRead) ? valueRead : 0);
Console.WriteLine($" {valueRead}");
});
Console.WriteLine(marks.Average() >= 0 ? "Positive" : "Negative");
}
}
类程序
{
常数int numberOfMarks=5;
静态void Main()
{
列表标记=新列表();
可枚举范围(1,numberOfMarks)
.ForEach((i)=>{
Write($“输入元素{i}:”);
marks.Add(int.TryParse(Console.ReadLine(),out var valueRead)?valueRead:0);
Console.WriteLine($“{valueRead}”);
});
Console.WriteLine(marks.Average()>=0?“正”:“负”);
}
}
我将使用while
循环和int.TryParse
来检查用户输入是否为数字。此外,将average=marks.average()放在下面也没有任何意义代码>在for循环中,因为LINQAverage
计算集合的平均值(在您的例子中,标记
数组)
static void Main()
{
int[]标记=新的int[5];
int a=0;
Console.WriteLine(“输入5个元素:”);
while(a<5)
{
if(int.TryParse(Console.ReadLine(),out标记[a]))
a++;
其他的
Console.WriteLine(“您没有输入数字!请重新输入!”);
}
双倍平均=分数。平均();
如果(平均值>0)
控制台。写线(“正”);
其他的
控制台。写入线(“负数”);
}
这将对您有所帮助,只需复制并粘贴即可。
有一些解释和评论
class Program
{
static void Main()
{
const int numberOfMarks = 5;
int[] marks = new int[numberOfMarks];
Console.WriteLine("Enter 5 elements:");
for (int a = 0; a < numberOfMarks; a++)
{
// If entered character not a number, give a chance to try again till number not entered
while(!int.TryParse(Console.ReadLine(), out marks[a]))
{
Console.WriteLine("Entered not a character");
}
Console.WriteLine("You entered : " + marks[a]);
}
// Have to call Average only once.
var avg = marks.Average();
Console.WriteLine(avg > 0 ? "Positive average" : "Negative average");
Console.ReadLine();
}
}
类程序
{
静态void Main()
{
常数int numberOfMarks=5;
int[]标记=新的int[numberOfMarks];
Console.WriteLine(“输入5个元素:”);
对于(int a=0;a0?“正平均值”:“负平均值”);
Console.ReadLine();
}
}
你应该在读完“line”后用它做些什么。我应该帮助你。还要注意,您当前正在初始化一个零长度数组,因此您可能希望将其更改为int[]marks=new int[5]
根据您从控制台输入值的方式,如果您输入以逗号分隔的值,也会更容易。然后可以转到string[]values=InputStr.split(',');-这就是所有的字符串值,按照约翰说的做。(或空格分隔的…不管你喜欢)一个小提示:你不需要intTemp
只需要在TryParse中使用out标记[A]
。你可以在控制台中使用它。WriteLine
方法这很好,你是对的。编辑了我的答案。我意识到,这和你这里的代码几乎一样。这是一个简单的问题,所以没有太多的解决方案。我会投票给你,因为除了我之外,你这里只有一个像样的答案。忘了提一下,它需要更多的答案。:)
class Program
{
static void Main()
{
const int numberOfMarks = 5;
int[] marks = new int[numberOfMarks];
Console.WriteLine("Enter 5 elements:");
for (int a = 0; a < numberOfMarks; a++)
{
// If entered character not a number, give a chance to try again till number not entered
while(!int.TryParse(Console.ReadLine(), out marks[a]))
{
Console.WriteLine("Entered not a character");
}
Console.WriteLine("You entered : " + marks[a]);
}
// Have to call Average only once.
var avg = marks.Average();
Console.WriteLine(avg > 0 ? "Positive average" : "Negative average");
Console.ReadLine();
}
}