所以这是我目前的代码:
string userInput;
int userInputInt;
int count = 0;
int arrayLength;
Console.WriteLine("Enter an Integer or a non integer value");
int[] userInputs;
userInputs = new int[10];
arrayLength = userInputs.Length;
while (count < 10)
{
Console.Write("Please Enter the Next Number ");
userInput = Console.ReadLine();
if (int.TryParse(userInput, out userInputInt))
{
userInputs[count] = userInputInt;
count = count + 1;
}
else
{
break;
}
}
Array.Reverse(userInputs);
foreach (var item in userInputs)
{
Console.Write(item.ToString() + " ");
当我打印我的数组时,它会显示用户输入的数字,但是当条件被破坏且数组的其余部分未被填充时,每个空格中也会显示0。
如果用户输入:1,2,3,q 我如何显示:3 2 1 现在我得到:0 0 0 0 0 0 0 3 2 1
答案 0 :(得分:2)
如果你必须使用一个数组(而不是List
或Stack
- 它的好处是不像数组一样固定大小)我建议改变:
foreach (var item in userInputs)
为:
foreach (var item in userInputs.Where(z => z != 0))
过滤掉0值。
如果0是有效输入,则考虑更改:
int[] userInputs;
为:
int?[] userInputs;
然后使用:
foreach (var item in userInputs.Where(z => z != null))
答案 1 :(得分:1)
我建议不要采用固定大小的数组,而是采用动态增长的列表:
string userInput;
int userInputInt;
int count = 0;
int arrayLength;
Console.WriteLine("Enter an Integer or a non integer value");
List<int>userInputs = new List<int>();
while (count < 10)
{
Console.Write("Please Enter the Next Number ");
userInput = Console.ReadLine();
if (int.TryParse(userInput, out userInputInt))
{
userInputs.Add(userInputInt);
count = count + 1;
}
else
{
break;
}
}
这样,您只需添加与用户实际输入的数字一样多的数字,但最多只能添加。 10。
现在循环你的列表:
foreach(var e in userInputs.Reverse()) { ... }
答案 2 :(得分:0)
这里你必须使用List代替数组,因为输入的数量是未知的/动态的,所以我更喜欢你使用List代替int []。
List<int> userInputs = new List<int>
while (count < 10)
{
Console.Write("Please Enter the Next Number ");
userInput = Console.ReadLine();
if (int.TryParse(userInput, out userInputInt))
{
userInputs.Add(userInputInt);
count = count + 1;
}
else
{
break;
}
}
对于以相反顺序打印项目,您可以使用如下循环:
for(int i=userInputs.Count-1;i>=0;i--)
{
Console.Write(userInputs[i].ToString() + " ");
}
或者只是喜欢this Example
userInputs.Reverse();
Console.WriteLine(String.Join(",",userInputs));
答案 3 :(得分:0)
有几种选择
您可以将foreach
循环更改为:
foreach (var item in userInputs.Take(count).Reverse())
或在一个声明中这样做:
Console.WriteLine(string.Join(" ", userInputs.Take(count).Reverse()));
或使用List<int>
,就像其他人所说的那样。
答案 4 :(得分:0)
因为整数的默认值是0,所以当用户只输入3个项目时,他按下输入循环将中断,你将打印这些值和默认值,更糟糕的是你不会区分零与用户或默认值,我建议改用List,然后只添加用户输入的有效值,如下所示:
List<int> userInputs = new list<int>();
while (count < 10)
{
Console.Write("Please Enter the Next Number ");
userInput = Console.ReadLine();
if (int.TryParse(userInput, out userInputInt))
{
userInputs.Add(userInputInt);
}
else
{
break;
}
}