我试图从用户那里获得5次输入并将这些值添加到标记数组中;
然后,它将计算平均值并相应地打印正面或负面。但是,我无法从用户那里获取输入“输入5个元素”。从用户那里获得输入后如何将它们添加到标记数组?任何提示都会有所帮助。
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");
}
}
}
答案 0 :(得分:2)
我会使用while
循环与int.TryParse
结合来检查用户输入是否为数字。将average = marks.Average();
置于for循环中也没有任何意义,因为LINQ Average
计算集合的平均值(在您的情况下是marks
数组)。
static void Main()
{
int[] marks = new int[5];
int a = 0;
Console.WriteLine("Enter 5 elements:");
while (a < 5)
{
if (int.TryParse(Console.ReadLine(), out marks[a]))
a++;
else
Console.WriteLine("You didn't enter a number! Please enter again!");
}
double average = marks.Average();
if (average > 0)
Console.WriteLine("Positive");
else
Console.WriteLine("Negative");
}
答案 1 :(得分:1)
编辑我的答案,说明在没有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");
}
}
答案 2 :(得分:0)
因为正在使用整数数组,并且由于控制台的输入是字符串值,您需要使用Parse()方法转换它。例如,
string words = "83";
int number = int.Parse(words);
编辑:在解析时使用字符串变量。
答案 3 :(得分: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();
}
}