3 回答

TA贡献1817条经验 获得超14个赞
我会使用一个while循环——它对这个问题很有意义。
另外——记住没有否定的用例——你也必须处理它。
int[] numbers = new int[] {13, 22, -5, 94, 66, -38, 41, -79, -1, 53};
int index = 0
while (index < numbers.Length & numbers[index] >= 0)
index++;
if (index < numbers.Length & numbers[index] < 0)
Console.WriteLine(numbers[index]);
else
Console.WriteLing("No neg.");
Console.ReadLine();

TA贡献1856条经验 获得超5个赞
要更正您的尝试break,请在找到号码后添加一个。这将终止循环,您将拥有数组中的第一个负数。
for (int i = 0; i < 10; i++)
{
if (numbers[i] < 0)
{
firstminus[0] = numbers[i];
break;
}
}
注意2点:
不需要数组
firstminus
——最好是简单的int
.循环运行到
10
. 这是一个神奇的数字。而是运行直到数组的长度。
所以:
int firstMinus;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] < 0)
{
firstminus = numbers[i];
break;
}
}
最后,如果您熟悉 linq,那么只需使用.FirstOrDefaultwhich 返回集合中与谓词匹配的第一项(default如果没有符合谓词,则返回类型的):
var firstMinus = numbers.FirstOrDefault(i => i < 0);

TA贡献1848条经验 获得超10个赞
你已经接近了,只要break你找到第一个负数,你就需要这样做。IE
if (numbers[i] < 0) {
firstminus[0] = numbers[i];
break; // terminate the loop
}
顺便说一句,我会使用一个int变量而不是构造一个数组来存储结果。
IE
int firstminus = 0;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] < 0) {
firstminus = numbers[i];
break; // terminate the loop
}
}
另一方面,最简单的方法是通过 LINQ:
numbers.FirstOrDefault(x => x < 0);
- 3 回答
- 0 关注
- 281 浏览
添加回答
举报