为什么我不能正确地将变量分配给数组?
Why can't I correctly assign variables to an Array?
所以我正在编写一个程序,输入一个数字(二进制),然后将该输入的每个数字分配给一个数组。
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;
如果您这样做并输入“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"); }
试试这个代码!
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 语句遍历输入字符串(将使您免于已经指出的错误)并将每个字符转换为将存储在数组中的整数。
干杯!
所以我正在编写一个程序,输入一个数字(二进制),然后将该输入的每个数字分配给一个数组。
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;
如果您这样做并输入“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"); }
试试这个代码!
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 语句遍历输入字符串(将使您免于已经指出的错误)并将每个字符转换为将存储在数组中的整数。
干杯!