【问题标题】:Why can't I correctly assign variables to an Array? [closed]为什么我不能正确地将变量分配给数组? [关闭]
【发布时间】:2016-02-23 00:39:34
【问题描述】:

所以我正在编写一个程序,它输入一个数字(二进制​​),然后将该输入的每个数字分配到一个数组中。

static void Main(string[] args)
{
    Console.Write("Please enter a binary number: ");
    String input = Console.ReadLine();
    int inputLength = input.Length;
    int nInput = Convert.ToInt32(input);
    int[] digits;
    digits = new int[inputLength];

    int remain = 10;
    int divider = 1;
    for (int i = 0; i > inputLength; i++)
    {
        digits[i] = (nInput % remain) / divider;
        remain = remain * 10;
        divider = divider * 10;
    }
    Console.WriteLine("Demo number  " + digits[0]);
}

但是,每当我运行代码时,我的所有数组的值似乎都是 0。这是为什么?

所以如果我的输入是 11010, digit[0] 应该是 0。 digit[1] 应该是 1。 digit[2] 应该是 0。 digit[3] 应该是 1。 digit[4] 应该是 1。

【问题讨论】:

  • i > inputLength 对于初学者来说应该是 i < inputLength
  • 嘿,下次调试你的代码。您会比发布问题更快地自己发现问题 ;-)
  • int inputLength = Convert.ToInt32(input);

标签: c# arrays digits


【解决方案1】:

循环没有执行,因为它的条件总是假的;所以你得到了它的默认值,把条件改成i < inputLength;

如果你这样做并且输入为“123”

控制台上的输出将是:Demo number 3;并且数组将是

digit[0]=3
digit[1]=2
digit[2]=1

一些改进代码的建议:

  • 使用int.TryParse(); 代替Convert.ToInt32(); 以避免引发转换异常。你可以看到一个比较here
  • 由于数字在数组中,您可以使用 Array.Reverse() 反转它们

那是..

        String input =Console.ReadLine();
        int nInput;
        int inputLength = input.Length;
        if (int.TryParse(input, out nInput))
        {
            int[] digits = new int[inputLength];
            Array.Reverse(digits);
            Console.WriteLine("Reversed Number is:{0}",String.Join( "",digits));
        }
        else { Console.WriteLine("Wrong input"); }

【讨论】:

  • 是的,谢谢,现在可以使用了!我忽略了这么一件小事。
【解决方案2】:

试试这个代码!

static void Main(string[] args)
        {
            string input = Console.ReadLine();
            int[] vec = new int[input.Length]; 
            int i = 0;
            foreach (char ch in input) {
                vec[i] = Convert.ToInt32(ch.ToString());
                i++;
            }

            foreach (int numaux in vec) {
                Console.WriteLine(numaux);
            }
            Console.Read();
        }

只需使用 foreach 语句遍历输入字符串(将使您免于已经指出的错误)并将每个 char 转换为将存储在数组中的 int。

干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多