作业要求我从用户输入中找到倒数第二个数字(最多10个),如果输入0,程序应停止并找到倒数第二个数字,而不进行计数。但是我必须事先声明数组的大小。 例如,如果我键入4 7 3 8 0,程序还会对所有0进行计数,直到有10个数字为止,这样它就会看到:4 7 3 8 0 0 0 0 00。有没有办法让我停止程序从看到其他0还是以某种方式更改数组大小?
编辑: 好的,这是我到目前为止的代码:
int s;
s = 10;
int[] numbers = new int[s];
for (int i = 0; i < numbers.Length; i++)
{
int.TryParse(Console.ReadLine(), out numbers[i]);
}
int firstLowestNumber = numbers[0];
int secondLowestNumber = numbers[0];
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] < firstLowestNumber)
{
firstLowestNumber = numbers[i];
}
}
for (int x = 0; x < numbers.Length; x++)
{
if (numbers[x] < secondLowestNumber && firstLowestNumber != numbers[x])
{
secondLowestNumber = numbers[x];
}
}
Console.WriteLine("Second Lowest Number is {0}", secondLowestNumber);
Console.ReadLine();
答案 0 :(得分:2)
使用int数组初始化时,所有数字都将为0。这意味着您仅需在输入为0时停止读取。
因此,在第一个foreach中进行一些更改即可:
int input;
int.TryParse(Console.ReadLine(), out input);
if (input == 0) break; //This will jump out of the foreach
number[i] = input;
答案 1 :(得分:0)
这取决于您的作业目标。
1)使用Linq(可能的老师特别要求您不使用Linq来完成此任务)
using System.Linq;
/*...*/
List<int> ints = new List<int>();
ints.Add(/*...*/);
/*...*/
ints = ints.Where(x => x != 0).ToList();
/*...*/
2)作为@Aldert的答案。
3)更改数组的打印机制
int[] ints = new int[10];
foreach (int element in ints) {
if (element == 0)
continue;
Console.Write("{0} ", element);
}