1

我正在尝试存储表示 4 位字符串的整数,其中一些以 0 开头。当我在控制台中写出这些值时,前导 0 被剥离,我可以阻止这种情况发生吗?我通读了文档,但看不到任何可以阻止这种情况发生的东西。到目前为止,这是我的代码:

class Fitness
{
    Random random = new Random();

     int[] myArray = new int[15];
     int[] myArray2 = new int[6];
     int[] numbers = new int[6];
     int randomNumber;
     public void setup()
     {

         for (int i = 0; i < 6; i++)
         {
             do
             {
                 randomNumber = random.Next(1, 16);
             }
             while (numbers.Contains(randomNumber));

             numbers[i] = randomNumber;

         }
         Array.Sort(numbers);
         foreach (int i in numbers)
         {
             Console.WriteLine(i);
         }
         Console.WriteLine("-----------------");
         Console.WriteLine("-----------------");

         myArray[0] = 0001;
         myArray[1] = 0010;
         myArray[2] = 0011;
         myArray[3] = 0100;
         myArray[4] = 0101;
         myArray[5] = 0110;
         myArray[6] = 0111;
         myArray[7] = 1000;
         myArray[8] = 1001;
         myArray[9] = 1010;
         myArray[10] = 1011;
         myArray[11] = 1100;
         myArray[12] = 1101;
         myArray[13] = 1110;
         myArray[14] = 1111;

         for (int i = 0; i < 6; i++)
         {
             myArray2[i] = myArray[numbers[i]-1];
         }
         foreach (int i in myArray2)
         {
             Console.WriteLine(i);
         }
     }
}
4

5 回答 5

7

Int32没有前导零,但string可以有。您需要应用正确的格式。您可以在以下位置使用十进制 ("D") 格式说明符ToString

 foreach (int i in myArray2)
 {
     Console.WriteLine(i.ToString("d4"));
 }

标准数字格式字符串

精度说明符指示结果字符串中所需的最小位数。如果需要,该数字在其左侧填充零以产生精度说明符给出的位数。如果未指定精度说明符,则默认值是表示不带前导零的整数所需的最小值。

于 2013-04-17T11:46:49.530 回答
5

尝试

Console.WriteLine(i.ToString("D4"));

阅读有关标准数字格式字符串的更多信息...

这与这个问题有关C# convert int to string with padding zeros?

编辑

当您按上述方式显示字符串格式时,您可以使用 int 数组做任何您想做的事情。

于 2013-04-17T11:44:32.300 回答
2

您将演示文稿与表示混淆了,请尝试:

Console.WriteLine(i.ToString("0000")); 
于 2013-04-17T11:45:14.207 回答
1

你不能做这个。Integer (int32) 存储在 4 个字节中,所以如果你想存储1(or 01or 00000000001) 那么字节看起来像这样(实际上在 x86 上是相反的,但是 big-endian 对我们人类来说更容易阅读):

00000000 00000000 00000000 00000001 

现在在打印这个值时,CPU 或您的程序或任何相关人员如何知道您只想打印三个零而不是内存中的三十一个?

您可以使用不同的数据类型(字符串、数组、最适合您需要的任何类型),也可以在打印时像其他答案建议的那样修复零的数量。

于 2013-04-17T11:49:02.683 回答
-1

正如蒂姆所说string可以前导零,Int32不能。

您可以使用Decimal ("D") Format Specifier

精度说明符指示结果字符串中所需的最小位数。如果需要,该数字在其左侧填充零以产生精度说明符给出的位数。如果未指定精度说明符,则默认值是表示不带前导零的整数所需的最小值。

Console.WriteLine(i.ToString("D4"));
于 2013-04-17T11:51:08.017 回答