阅读数字时出现问题

时间:2011-07-04 04:40:46

标签: c# numbers

朋友您好我是c#的初学者。 我想以下列格式阅读数字

2

1 10

3 5

对于阅读2,我使用了Convert.ToInt32(Console.ReadLine())方法并成功存储了它。但是对于下一个输入我想要读取数字并在空格后我想要读取另一个数字。我不能使用ReadLine()方法..我使用了Convert.ToInt32(Console.Read())

但数字1读为49

那么我如何实现阅读数字

在java中,我发现了一个名为Scanner的类似类,其中包含方法行nextInt() 是否有任何C#等同于该类。

简而言之,我只想知道如何在C#中读取和存储数字(整数或浮点数)。

5 个答案:

答案 0 :(得分:4)

您可以使用ReadLine()并在空白处拆分,即

void Main( string[] args )
{
    var numbers = new List<int>();
    while(whatever)
    {
        var input = Console.ReadLine();
        var lines = input.Split( 
            new char[] { ' ' }, 
            StringSplitOptions.RemoveEmptyEntries 
            );

        foreach( var line in lines )
        {
            int result;
            if( !int.TryParse( line, out result ) )
            {
                // error handling
                continue;
            }

            numbers.Add( result );
        }
    }
}

答案 1 :(得分:2)

您可以使用Split方法将行划分为数字。

while (true)
{
   var s = Console.ReadLine();
   if (s == null) break;
   foreach (var token in s.Split(' '))
   {
        int myNumber = int.Parse(token);
        // ...  do something ....
   }
}

答案 2 :(得分:1)

你的问题是将字符串转换为整数,因为Console.Readline总是返回一个字符串。

解析多个int有很多种方法,但基本上你需要使用某种方法拆分字符串。我不知道C#中的Scanner(但我想你应该找一些 tokenizer 来找到它,因为这将是标准名称。

写一个并不难,特别是如果你只想要用空格分隔整数。在方法中实现它可能类似于

   // Optional seperators 
   public IEnumerable<int> ParseInts(string integers, params char[] separators)
   {
       foreach (var intString in integers.Split(separators))
       {
            yield return int.Parse(intString);
       }
   }


   public IEnumerable<int> ParseInts(string integers)
   {
        return ParseInts(integers, ' ');
   }

答案 3 :(得分:0)

使用此

        string[] lines = File.ReadAllLines("Path to your file");
        foreach (string line in lines)
        {
            if (line.Trim() == "")
            {
                continue;
            }
            string[] numbers = line.Trim().Split(' ');
            foreach (var item in numbers)
            {
                int number;
                if (int.TryParse(item, out number))
                {
                    // you have your number here;
                }
            }
        }

答案 4 :(得分:0)

我在HackerRank上做了很多,这是我用来读取整数数组的辅助方法:

static int [] StringToIntArray(string s) {
    string [] parts = s.Split(' ');
    int [] arr = new int[parts.Length];
    for (int i = 0; i < arr.Length; i++) {
        arr[i] = Convert.ToInt32(parts[i]);
    }
    return arr;
} 

这是一个样本,在一行中读取两个数字,然后是两行,其中包含许多数字到数组:

string [] parts = Console.ReadLine().Split(' ');
int n = Convert.ToInt32(parts[0]);
int m = Convert.ToInt32(parts[1]);
int [] a = StringToIntArray(Console.ReadLine());
int [] b = StringToIntArray(Console.ReadLine());

示例输入:

3 5
40 50 60
10 20 30 100 7500