在我的程序中,用户必须输入5个数字(不同的位数)。
int[] num = new int[5];
for(int x = 0; x < 5; x++)
{
Console.Write("Enter number" + (x + 1) + ": ");
num[x] = Convert.ToInt32(Console.ReadLine());
}
获取最大长度:
int maxLength = 0;
for (int x = 0; x < 10; x++)
{
string c = num[x].ToString();
int l = c.Length;
if (l > maxLength)
maxLength = l;
}
现在,我想检查其他数字是否具有相同的数字长度。如果没有,我将添加0(或0,取决于长度)作为该数字的最后一位数。 如何检查该数字的charAt(或c#num [x])是空还是空?
我试过了:
if(c[maxLength] == ' ')
但是我收到了System.IndexOutOfRangeException错误
答案 0 :(得分:0)
以秒为单位更改x <5秒
for (int x = 0; x < 5; x++)
答案 1 :(得分:0)
num[x]
永远不会是null
。它可能是int
,或者您的程序会因输入转换错误而崩溃。
num[x] = Convert.ToInt32(Console.ReadLine());
具体来说,根据documentation:
返回值类型:System.Int32一个32位有符号整数 相当于值中的数字,如果value为null,则为0(零)。
关于被排除的例外情况:
注意:此外,您应该更改第二个循环的上限。正如我们从第一个循环中看到的那样,num.length
将是5,而你的第二个循环的上限(不包括)是10!您可以使用num.legnth
替换10,如果您稍后更改5,则不必再次更改第二个循环的上限。
答案 2 :(得分:0)
您可以通过将数字除以基数来计算数字的位数,直到您得到零。
int number = 250;
int basenumber = 10;
int digitcount = 0;
for (int temp = number; temp > 0; temp /= basenumber)
digitcount++;
在这种情况下,digitcount将是3。
答案 3 :(得分:0)
你的代码中第一件事是你创建了长度为5的int数组并试图在循环中获得10个元素的值 -
<!-- language: c# -->
int[] num = new int[5];
for (int x = 0; x < 10; x++)
这就是你得到这个例外的原因。
现在来到第二个问题 - 如果值将为null 所以在这种情况下,如果没有分配值,你将得到零。
答案 4 :(得分:0)
您可以使用:
foreach (int number in num)
{
Console.WriteLine(number * Math.Pow(10, maxLenght - (number != 1 ? Math.Ceiling(Math.Log10(number)) : 1)));
}
答案 5 :(得分:0)
以下是一个如何将一组数字填充到最长数字长度的示例:
@Inputs()
答案 6 :(得分:0)
我喜欢以下
static void Main(string[] args)
{
int maxDigits;
string[] codes = EnterNumber(5, out maxDigits); '<--| '5' is the number of numbers you want the user to input
codes = UnifyDigits(codes, maxDigits);
}
static string[] EnterNumber(int entriesNumber, out int maxDigits)
{
string[] entries = new string[entriesNumber];
int number;
int maxL=0;
for (int i = 0; i < entriesNumber; i++)
{
do
{
Console.WriteLine("enter a number");
} while (!Int32.TryParse(Console.ReadLine(), out number) );
entries[i] = number.ToString();
maxL = Math.Max(entries[i].Length, maxL);
}
maxDigits =maxL;
return entries;
}
static string[] UnifyDigits(string[]entries, int maxDigits)
{
string[] unifiedEntries = entries;
for (int i = 0; i < entries.Length; i++)
{
if (entries[i].Length<maxDigits)
entries[i] = entries[i] + new String('0', maxDigits - entries[i].Length);
}
return unifiedEntries;
}