I was searching for solution to find negative numbers in array and i came up with something like this code from searching.
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);
}
}
I was wondering is there an easier or shorter way to find the negative number in an array vs the code above?
Bohemian♦
408k90 gold badges570 silver badges715 bronze badges
asked Oct 1, 2012 at 13:18
10
A java 7 string-based one-liner that counts the minus signs:
System.out.println(Arrays.toString(array).replaceAll("[^-]+", "").length());
A Java 8 stream-based way:
System.out.println(Arrays.stream(array).filter(i -> i < 0).count());
Regarding your code, there are a few things wrong with it:
- Since you don’t care about the index of an element, use the foreach syntax instead
- Declare the scope of your count variable outside the loop, otherwise
- it keeps getting set to zero every iteration, and
- you couldn’t use it even if it did contain the correct count because it would be out of scope (which would be only inside the loop) where you need to return it (after the loop)
- Use the correct test
number < 0
(your code>= 0
counts non negative numbers)
Try this:
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);
}
answered Oct 1, 2012 at 13:24
Bohemian♦Bohemian
408k90 gold badges570 silver badges715 bronze badges
0
A few issues with the code:
- the terminating condition in the
for
will produce an out of bounds exception (arrays use zero-based index) - the scope of
negativeCount
is within thefor
only - the negative check is incorrect
A slightly shorter version would use the extended for
:
int negativeCount = 0;
for (int i: arrayNumbers)
{
if (i < 0) negativeCount++;
}
For a shorter version (but arguably less readable) eliminate the for
‘s {}
:
int negativeCount = 0;
for (int i: arrayNumbers) if (i < 0) negativeCount++;
answered Oct 1, 2012 at 13:21
hmjdhmjd
120k19 gold badges206 silver badges249 bronze badges
2
Your negativeCount should be declared outside your loop.. Also, you can move your System.out.println(negativeCount)
outside your loop, as it will print for every iteration..
And you can use enhanced-for loop
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);
}
answered Oct 1, 2012 at 13:22
Rohit JainRohit Jain
208k45 gold badges406 silver badges523 bronze badges
3
A bit shorter with the foreach syntax:
int negativeCount = 0;
for(int i : arrayNumbers)
{
if(i < 0)negativeCount++;
}
answered Oct 1, 2012 at 13:23
josefxjosefx
15.5k6 gold badges38 silver badges63 bronze badges
2
0 / 0 / 0 Регистрация: 15.12.2015 Сообщений: 42 |
|
1 |
|
Поиск отрицательных чисел в массиве20.01.2016, 18:18. Показов 16274. Ответов 1
помогите пожалуйста, нужно из массива A[10] вывести на экран все отрицательные числа
0 |
GbaLog- Любитель чаепитий 3737 / 1796 / 563 Регистрация: 24.08.2014 Сообщений: 6,012 Записей в блоге: 1 |
||||
20.01.2016, 18:31 |
2 |
|||
Сообщение было отмечено gru74ik как решение Решениеkroekt94,
1 |
Максимальный отрицательный элемент массива
Просмотров 7.4к. Обновлено 15 октября 2021
В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.
Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.
Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.
После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.
Pascal
максимальное отрицательное число паскаль
const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 50;
write(arr[i],' ');
end;
writeln;index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] > arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,': ',arr[index]);
end.
-36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4
Язык Си
#include < stdio.h>
#define N 15main() {
int arr[N],index, i;
srand(time(NULL));
for (i=0; i< N; i++) {
arr[i] = rand() % 100 - 50;
printf("%d ", arr[i]);
}
printf("n");index = -1;
for (i=0; i< N; i++) {
if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] > arr[index])
index = i;
}
printf("%d-й = %dn",index+1,arr[index]);
}
33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1
Python
максимальное отрицательное число python (питон)
from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) - 50)
print(arr)i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] > arr[index]:
index = i
i += 1print(index+1,':', arr[index])
[-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5
КуМир
алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, indexнц для i от 1 до N
arr[i] := irnd(100) - 50
вывод arr[i], " "
кц
вывод нсindex := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] > arr[index] то
index := i
все
все
кц
вывод index, ": ", arr[index], нс
кон
19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2
Basic-256
N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) - 50
print arr[i] + " ";
next iindex = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next iprint index+1;
print ": ";
print arr[index]
17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7
Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.
Напишем программу, которая определяет наличие в массиве отрицательных чисел.
Определение наличия в массиве отрицательных чисел.
program massiv8; uses crt; const N=10; type x=array [1..N] of integer; var a:x; i:integer; k:integer; begin clrscr; randomize; for i:=1 to N do begin a[i]:= -100+random (201); write (A[i]:5) end; writeln; k:=0; for i:=1 to N do if a[i] <0 then="" li=""> inc (k); if k>0 then begin writeln ('В массиве есть отрицательные элементы'); writeln ('Количество отрицательных элементов = ',k:5); end else writeln ('В массиве нет отрицательных элементов'); readln end.
В строке №7 записываем переменную для хранения количества отрицательных элементов.
Строка №13-№14 генерируем случайные числа и выводи их на экран.
В строке №17 присваиваем «K» первоначальное значение равное 0.
В строке №19 записываем условие: если значение элемента массива (т.е. если сгенерированное число) меньше 0, тогда увеличиваем переменную «K» на единицу (строка №20).
В строке №21 записываем условие: если K>0 (т.е. если количество отрицательных чисел больше 0), тогда выводим на экран 2 сообщения (строка №23 и №24). В обратном случае (строка №26), выводим другое сообщение (строка №27).
Предыдущая статья : Подсчет количества четных элементов в массиве.
Оглавление : Уроки Паскаль. Массивы.
Следующая статья : Нахождение номера отрицательного элемента в массиве.