C#控制台用户输入

时间:2012-06-28 20:45:46

标签: c#

好的,我想先说我不是学生,所以这个问题与家庭作业完全无关。我正在努力学习C#,因为我想要工作的公司使用它。我听说C#与java非常相似所以我正在使用我的java书来解决运动问题来练习c#。这是我的问题,我正在尝试创建一个简单的程序,用户输入3个等级并将其存储在一个数组中,然后显示输入的三个等级。问题是它没有存储成绩。然而它显示一些随机数,如果我输入34,44和54它返回51.这是我的代码并感谢大家:

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

namespace Practice1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] test = new int[4];

            int i = 1;

            for (i = 1; i <= 3; i++)
            {
                Console.WriteLine("Please enter test " + i);
                test[i] = Console.Read();
                Console.ReadLine();

            }
            for (i = 1; i <=3; i++)
            {
                Console.WriteLine(test[i]);
                Console.ReadLine();
            }
        }
    }
}

7 个答案:

答案 0 :(得分:9)

你的问题在这里:

test[i] = Console.Read();

这是将一个字符(整数字符代码)放入测试数组中。

取而代之的是

test[i] = int.Parse(Console.ReadLine());

编辑:如果您不确定用户是否会键入可解析的整数,也许他们会键入“6”,例如您可能会考虑使用try / catch(如果您想要知道为什么它不会解析),或者int.TryParse,它返回true表示成功,并将解析后的整数分配给变量,字段或数组索引:

if(int.TryParse(Console.ReadLine(), out test[1])
   Console.WriteLine("Successfully parsed integer");
else
   Console.WriteLine("Please enter an integer.");

答案 1 :(得分:2)

Console.Read()返回输入密钥的ASCII值。例如,如果键入“A”,则得到值65,即“A”的ASCII码。

您需要将字符串解析为整数:

for (i = 0; i < 4; i++)
{
    Console.WriteLine("Please enter test " + i);
    string input = Console.ReadLine();
    int value;
    bool success = int.TryParse(input, out value);
    if (success)
    {
        test[i] = value
    }
    else
    {
        // Show an error message that the user must enter an integer.
    }

    Console.ReadLine();

}                

另请注意,数组在C#中以0开头编号,而不是代码假定为1。

或者你仍然可以使用Console.Read(),它返回输入字符的整数表示,确认该字符实际上是一个数字,并从ASCII代码转换为适当的数字。

答案 2 :(得分:2)

docs Console.Read()“读取标准输入流中的下一个字符。”

你想要下一个整数,所以像

bool cont = false;
int val = 0;
do
{
    cont = int.TryParse(Console.ReadLine(), out val);
    if(!cont){Console.WriteLine( "please enter a real number you fool" );}
} while (!cont);

应该工作。

答案 3 :(得分:2)

        int[] test = new int[3];

        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine("Please enter test " + i + 1);
            test[i] = Int.Parse(Console.ReadLine());
        }
        for (int i = 0; i < 3; i++)
        {
            Console.WriteLine(test[i]);
            Console.ReadLine();
        }

正如您所看到的,数组从索引0开始,因此不需要定义int [4](比需要的更多一个int),并且需要从索引0循环到length-1

答案 4 :(得分:2)

问题是你在读这个角色。因此,您看到的“51”是数字3的十进制(基数10)ASCII值。您需要做的是以下内容:

string result = Console.ReadLine();
int grade = 0;
int.TryParse(result, out grade)
test[i] = grade;

答案 5 :(得分:1)

Console.Read()返回一个字符。您想从控制台读取string,将其转换为int,然后将该值存储在数组中。

答案 6 :(得分:0)

以下是代码:

int [] test = new int [3];

        for (int e = 0; e < 3; e++)
        {
            Console.WriteLine("Please enter test ");
            test[e] = int.Parse(Console.ReadLine());
        }


        Console.WriteLine("000000000000000000000000000\n");

        for (int e = 0; e < 3; e++)
        {

            Console.WriteLine(test[e]);
            //Console.ReadLine();

        }