我试图存储代表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);
}
}
}
答案 0 :(得分:6)
Int32
没有前导零,但string
可以拥有。您需要应用正确的格式。您可以在ToString
中使用小数(“D”)格式说明符:
foreach (int i in myArray2)
{
Console.WriteLine(i.ToString("d4"));
}
Standard Numeric Format Strings
精度说明符表示所需的最小位数 在结果字符串中。如果需要,数字用零填充 在其左边产生由精度给出的位数 符。如果未指定精度说明符,则默认值为 表示不带前导零的整数所需的最小值。
答案 1 :(得分:5)
尝试
Console.WriteLine(i.ToString("D4"));
详细了解Standard Numeric Format Strings...
这与此问题 C# convert int to string with padding zeros?
有关当您按上面显示格式化字符串时,您可以使用int数组执行任何操作。
答案 2 :(得分:2)
您将演示文稿与陈述混淆,请尝试:
Console.WriteLine(i.ToString("0000"));
答案 3 :(得分:1)
你不能这样做。整数(int32)以4个字节存储,因此如果要存储1
(或01
或00000000001
),则字节看起来像这样(实际为the other way around on x86,但是big-endian对于我们人类来说更容易阅读):
00000000 00000000 00000000 00000001
现在打印此值时,CPU或您的程序或参与者如何知道您只想打印三个零而不是内存中的三十一个?
您可以使用不同的数据类型(字符串,数组,最适合您的需求),也可以像其他答案一样在打印时修复零的数量。
答案 4 :(得分:-1)
由于Tim said,string
可以引导零,Int32
不能。{/ p>
您可以使用Decimal ("D") Format Specifier
精度说明符表示所需的最小位数 在结果字符串中。如果需要,数字用零填充 在其左边产生由精度给出的位数 符。如果未指定精度说明符,则默认值为 表示不带前导零的整数所需的最小值。
Console.WriteLine(i.ToString("D4"));