C# Read和ReadLine问题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class banji
{
static void Main(string[] args)
{
int a,i;
Console.WriteLine("请输入班级人数");
a=int.Parse(Console.ReadLine());
int[] grade = new int[a];
int[] count = new int[5];
Console.WriteLine("请输入成绩");
for (i = 0; i < a; i++)
grade[i]=Console.Read();// grade[i]=int.parse(Console.ReadLine());
foreach (int temp in grade)
{
if (temp < 60 && temp > 0) count[0]++;
else if (temp < 70) count[1]++;
else if (temp < 80) count[2]++;
else if (temp < 90) count[3]++;
else if (temp <= 100) count[4]++;
}
Console.WriteLine("不及格{0}人,及格{1}人,中等{2}人,良好{3}人,优秀{4}人",count[0],count[1],count[2],count[3],count[4]);
}
}
}
无论怎么输入成绩,输出的都是不及格比如有4个人输入10 60 70 100输出不及格4人。怎么回事?把注释的地方改为grade[i]=int.parse(Console.ReadLine());就正常了,不过输入成绩的时候每输入一个成绩要按一次回车,我希望能用空格来分隔。

        static void Main(string[] args)
        {
            int a, i;
            Console.WriteLine("请输入班级人数");
            a = int.Parse(Console.ReadLine());
            int[] grade = new int[a];
            int[] count = new int[5];
            Console.WriteLine("请输入成绩");
            //for (i = 0; i < a; i++)
            //    grade[i] = Console.Read();//  grade[i]=int.parse(Console.ReadLine());
            string[] arr = Console.ReadLine().Split(' ');
            for (i = 0; i < a; i++)
            {
                grade[i] = arr.Count() >= i + 1 ? int.Parse(arr[i]) : 0;
            }

            foreach (int temp in grade)
            {
                if (temp < 60 && temp > 0) count[0]++;
                else if (temp < 70) count[1]++;
                else if (temp < 80) count[2]++;
                else if (temp < 90) count[3]++;
                else if (temp <= 100) count[4]++;
            }
            Console.WriteLine("不及格{0}人,及格{1}人,中等{2}人,良好{3}人,优秀{4}人", count[0], count[1], count[2], count[3], count[4]);
            Console.WriteLine("-------");
            Console.ReadLine();
        }

 你原来的写法有几个错误的地方:

    Console.Read(); 是从标准输入流读取下一个字符;他读不到你输入的值;

    你想一次读取所有的值,可以考虑我写的方式;先用Console.ReadLine()读取输入的数据;然后根据空格(也可以用逗号、分号等其他字符)分隔成数组

温馨提示:内容为网友见解,仅供参考
无其他回答

C#中关于Read()和ReadLine()
1. 在C#中,`Read()`方法用于读取一个字符,并返回该字符的ASCII码,而`ReadLine()`方法用于读取一行文本,并返回一个`string`类型的值。2. 对于`Console.Read()`和`Console.ReadLine()`的比较,以下是一些结果的示例:- 当输入数字2时,`Read()`将返回一个`int`类型的值50(因为2的ASCII码是...

c# Read与ReadLine 问题
Read读取到的是整数 字符的ascii码 当然不能隐式转换为string ReadLine读取的是字符串

C#关于ReadLine()和Read()区别?
ReadLine返回的是个string Read返回的是当前字符的ASCII码的int值,一个是字符串转换成数字,一个是字符ASCII值转换,不一样的,字符1的值是49,当然输出不了了

C# Read和ReadLine问题
static void Main(string[] args) { int a, i; Console.WriteLine("请输入班级人数"); a = int.Parse(Console.ReadLine()); int[] grade = new int[a]; int[] count = new int[5]; Console.WriteLine("请输入成绩"); \/\/for (i = 0; i < a; i++) ...

c#中的readline()与read的区别?搞不懂,详细点
Read() 和 ReadLine() 的区别---缓冲区问题 【这里有缓冲区的问题】 如以下代码:Console.WriteLine("请输入一个字符:");int i = Console.Read();char chr = (char)i;Console.WriteLine("字符:" + chr);Console.WriteLine("请输入一个字符串:");string ctr = Console.ReadLine();Conso...

C#程序中,Read()和ReadLine()的区别除了ReadLine()是换行Read()不是换 ...
Console.Read() 是从控制台读取一个字符。Console.ReadLine()是从控制台读取一行字符串。程序是接受用户输入一个字符,检查其大小写,所以这里用Read()更合适。

c#中read()与readline的区别??
Console.Read()只是读取一个字符 Console.ReadLine()读取一行(Enter键)很多时候 Console.ReadLine() 是用于退出当前application,Console.WriteLine;("按回撤键退出")Console.ReadLine();按“回撤键”退出

c#关于 read()和readline()方法的描述正确的是: A.read()方法一次可以...
答案:C。A:逐个字符读取;B:包括;D:按键了read()就返回。

C#中的Read()和ReadLine()有什么区别?
Console.Read()只是读取一个字符 Console.ReadLine()读取从键盘中输入的所有字符 Read读取字符,ReadLine读取字符串!基本上可以这么理解,我都是这么用,没有出错

c#关于 read()和readline()方法的描述
选D Aread一次只能读一个 Bread能读取\\n(换行符)Creadline也能读取换行符

相似回答