数组值混淆

时间:2015-07-21 21:18:21

标签: c# arrays

在处理基本的编码挑战时,我遇到了一个令人困惑的情况,我无法理解(我是编程新手)的原因

在尝试将数字拆分为各个数字时,我的int数组包含值13但返回值49 ??

这可能是一个明显的原因,如果是这样,我道歉。

我找到了另一种方法将我的数字字符串拆分成单个数字但仍想知道我做错了什么

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

namespace AddTheDigits
{
    class Program
    {
        static void Main(string[] args)
        {
            using (StreamReader reader = new StreamReader("TextFile1.txt")) 
            {
                    //int total = 0;
                    string line = reader.ReadLine();

                    //Console.WriteLine(line); //testing

                    char[] charArray = line.ToCharArray(0,1);

                    int[] intArray = new int[charArray.Length];

                    for (int i = 0; i < intArray.Length; i++)
                    {
                        intArray[i] = Convert.ToInt32(charArray[i]);
                        Console.Write(intArray[i]);
                    }
                }
            Console.ReadLine();
        }
    }
}

4 个答案:

答案 0 :(得分:2)

您可能正在将数字的ASCII码与数字本身混合在一起。尝试替换

intArray[i] = Convert.ToInt32(charArray[i]);

intArray[i] = charArray[i] - '0';

看看是否有帮助。

答案 1 :(得分:2)

您正在抓住select u.name , count(distinct i.name) as NumberOfItems FROM users u LEFT JOIN items i on u.name = i.owner order by count(distinct i.name) desc (可能包含&#39; 13&#39;),并抓住其中的第一个linechar)。然后,将此char(其数值为49,等于UTF-16中的&#39; 1&#39;)转换为int(仍然等于49)并打印它。就是这样。 &#39; 3&#39;由于line.ToCharArray(0,1);仅抓住第一个字符而被遗漏。

答案 2 :(得分:0)

你在做什么本质上是:

"13".ToCharArray(0,1);

将为您提供与以下相同的值:

char c = '1';

是49,'1'的ASCII代码

答案 3 :(得分:0)

49是1的ASCII码。

您应该使用Int32.Convert

,而不是使用Int32.Parse