显示小于40的整数数组标记

时间:2019-05-15 17:26:22

标签: c#

在第二个循环中,我希望它遍历数组,并显示所有得分低于40分的学生的姓名和分数。

我将如何去做?

            string[] studentNames = new string[5];
            int[] classScores = new int [5];

            for (int i = 0; i < classScores.Length; i++)
            {
                Console.WriteLine("Please enter a students name");
                studentNames[i] = Console.ReadLine();

                Console.WriteLine("Please enter marks");
                classScores[i] = int.Parse(Console.ReadLine());
            }

            for (int i = 0; i < 40; i++)
            {
                foreach (var item in studentNames)
                {
                    Console.WriteLine(item.ToString());
                }

                foreach (var item in classScores)
                {
                    Console.WriteLine(item.ToString());
                }
            }  

            Console.WriteLine("Please enter the Return key to exit");
            ConsoleKeyInfo keyinfo = Console.ReadKey();
            while (keyinfo.Key != ConsoleKey.Enter)
                keyinfo = Console.ReadKey();

2 个答案:

答案 0 :(得分:1)

您应该创建一个名为Student的类,而不是创建两个不同的数组,并向其中添加两个属性,即Name and Score

public class Student
{
   public string Name {get;set;}
   public int Score {get;set;}
}

现在创建“学生”列表以存储所有学生的数据。

List<Student> StudentList = new List<Student>();

现在使用Linq查询获取分数低于40的学生

var result = StudentList.Where(x => x.Score < 40).ToList();

这是您的重构代码:

public class Student
{
   public string Name {get;set;}
   public int Score {get;set;}
}

public class Program
{
   public static void Main(string[] args)
   {
       List<Student> Students = new List<Student>();

       for (int i = 0; i < 5; i++)
        {
            Console.WriteLine("Please enter a students name");
            string name = Console.ReadLine();

            Console.WriteLine("Please enter marks");
            var score = int.Parse(Console.ReadLine());

            Students.Add(new Student(){Name = name, Score = score});
        }

       var result = Students.Where(x => x.Score < 40).ToList();

       foreach(var item in result)
       {
          Console.WriteLine($"Name : {item.Name} and Score : {item.Score}");
       }
       Console.ReadLine();
   }
}

答案 1 :(得分:1)

Prasad的方法比您目前使用的方法更清洁。但是如果你坚持。 更改此行:

for (int i = 0; i < 40; i++) { 
foreach (var item in studentNames)
 {
 Console.WriteLine(item.ToString());
 }
 foreach (var item in classScores)
 { 
Console.WriteLine(item.ToString()); }
 }

收件人:

    for(int i=0; i<classScores.Length; i++) 
        {
            if(classScores[i]<40) 
            {
               Console.WriteLine($"{studentNames[i] } scored {classScores[i] }");
            }
        }

这是假设: 两个阵列的固定长度相同。 学生的姓名和分数总是相对应的。