我正在寻找解决方案来找到数组中的负数,我想出了类似于搜索代码的内容。
public static void main(String args[]){
int arrayNumbers[] = { 3, 4, 7, -3, -2};
for (int i = 0; i <= arrayNumbers.length; i++){
int negativeCount = 0;
if (arrayNumbers[i] >= 0){
negativeCount++;
}
System.out.println(negativeCount);
}
}
我想知道是否有更简单或更短的方法来查找数组中的负数而不是上面的代码?
答案 0 :(得分:6)
基于java 7字符串的单行计算减号:
System.out.println(Arrays.toString(array).replaceAll("[^-]+", "").length());
基于Java 8流的方式:
System.out.println(Arrays.stream(array).filter(i -> i < 0).count());
关于你的代码,它有一些问题:
number < 0
(您的代码>= 0
计算非负数)试试这个:
public static void main(String args[]) {
int[] array = { 3, 4, 7, -3, -2};
int negativeCount = 0;
for (int number : array) {
if (number < 0) {
negativeCount++;
}
}
System.out.println(negativeCount);
}
答案 1 :(得分:2)
代码的一些问题:
for
中的终止条件将产生越界异常(数组使用从零开始的索引)negativeCount
的范围仅在for
略短的版本会使用扩展的for
:
int negativeCount = 0;
for (int i: arrayNumbers)
{
if (i < 0) negativeCount++;
}
对于较短的版本(但可读性较差),取消for
的{{1}}:
{}
答案 2 :(得分:0)
你的negativeCount应该在你的循环之外声明。另外,你可以将你的System.out.println(negativeCount)
移到你的循环之外,因为它会为每次迭代打印..
您可以使用增强型 - 循环
public static void main(String args[]){
int arrayNumbers[] = { 3, 4, 7, -3, -2};
int negativeCount = 0;
for (int num: arrayNumbers) {
if (num < 0){
negativeCount++;
}
}
System.out.println(negativeCount);
}
答案 3 :(得分:0)
使用foreach语法稍微缩短一点:
int negativeCount = 0;
for(int i : arrayNumbers)
{
if(i < 0)negativeCount++;
}