Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 02:14   #1
alexchromets
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 49
Сообщение Сумма всех положительных элементов массива

Делаю задачу, застрял на нахождении суммы положительных элементов массива.
Код:
import java.util.Random;

public class form_3 {

	/**
	 * +1. Ввести элементы массива.
	 * -2. Определить "расстояние" (количество элементов) между наибольшим и наименьшим элементами массива.
	 * +3. Определить количество отрицательных элементов массива.
	 * -4. Вычислить сумму и среднее арифметическое всех положительных элементов массива.
	 */
	//Часть 3
	// метод создает массив указанного размера
		// и заполняет его случайными целыми числами 
		public static int[] generateArray(int size) {
			Random rnd = new Random();
			int[] array = new int[size];
			for(int i=0; i < size; i++) {
				array[i] = rnd.nextInt();
			}
			return array;
		}
		
		public static void main(String[] args) {
			// создадим массив из 10 элементов
			int[] array = generateArray(10);
			
			// выводим массив в консоль
			for(int i : array) {
				System.out.print(i + " ");
			}
			
			// считаем элементы
			int negative = 0;
			long sum = 0L;
			int positive = 0;
			for(int i : array) {
				if(i < 0) negative++;
				if(i > 0) {
					positive++;
					try {
						sum += array[i];
					} catch (ArrayIndexOutOfBoundsException e) {
						e.printStackTrace();
					}
				}
			}
			System.out.println();
			// выведем результат в консоль
			System.out.println("Кол-во отрицательных элементов: " + negative);
			System.out.println("Кол-во положительных элементов: " + positive);
			System.out.println("Сумма положительных элементов: " + sum);
		}
	 
	}
Выводит:
Код:
300741653 851245720 -1347787978 -131004904 -979350894 -1790167162 -1077143614 -691726829 -1160763523 618180693 java.lang.ArrayIndexOutOfBoundsException: 300741653
	at form_3.main(form_3.java:41)
java.lang.ArrayIndexOutOfBoundsException: 851245720
	at form_3.main(form_3.java:41)
java.lang.ArrayIndexOutOfBoundsException: 618180693
	at form_3.main(form_3.java:41)

Кол-во отрицательных элементов: 7
Кол-во положительных элементов: 3
Сумма положительных элементов: 0
Строка 41 это
Код:
sum += array[i];
alexchromets вне форума Ответить с цитированием
Старый 18.02.2013, 03:03   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
sum += array[i];
||
||
\/
Код:
sum += i;
Carbon вне форума Ответить с цитированием
Старый 18.02.2013, 03:37   #3
alexchromets
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 49
По умолчанию

Работает, спасибо.
А как сделать, чтобы можно было самому вводить элементы массива?
alexchromets вне форума Ответить с цитированием
Старый 18.02.2013, 10:04   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Так же, как ты делал в соседней теме.
Carbon вне форума Ответить с цитированием
Старый 04.03.2013, 08:45   #5
alexchromets
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 49
По умолчанию

Ага, точно, просто для массивов тоже так работает)
И последнее, на чем я застрял: определить расстояние между наибольшим и наименьшим элементами массива.
Код:
import java.util.Random;

public class form_3 {

	/**
	 * +1. Ввести элементы массива.
	 * -2. Определить "расстояние" (количество элементов) между наибольшим и наименьшим элементами массива.
	 * +3. Определить количество отрицательных элементов массива.
	 * +4. Вычислить сумму и среднее арифметическое всех положительных элементов массива.
	 */
	//Часть 3
	// метод создает массив указанного размера
		// и заполняет его случайными целыми числами 
		public static int[] generateArray(int size) {
			Random rnd = new Random();
			int[] array = new int[size];
			for(int i=0; i < size; i++) {
				array[i] = rnd.nextInt();
			}
			return array;
		}
		
		public static void main(String[] args) {
			// создадим массив из 5 элементов
			int[] array = generateArray(5);
			
			// выводим массив в консоль
			for(int i : array) {
				System.out.print(i + " ");
			}
			
			// считаем элементы
			int negative = 0;
			long sum = 0L;
			int positive = 0;
			for(int i : array) {
				if(i < 0) negative++;
				if(i > 0) {
					positive++;
					try {
						sum += i;
					} catch (ArrayIndexOutOfBoundsException e) {
						e.printStackTrace();
					}
				}
			}
			System.out.println();
			// выведем результат в консоль
			System.out.println("Кол-во отрицательных элементов: " + negative);
			System.out.println("Кол-во положительных элементов: " + positive);
			System.out.println("Сумма положительных элементов: " + sum);
			System.out.println("Cреднее арифметическое положительных элементов: " + sum/positive);
		}
	 
	}
alexchromets вне форума Ответить с цитированием
Старый 04.03.2013, 15:55   #6
alexchromets
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 49
По умолчанию

Вот что у меня получилось:
Код:
import java.util.Random;

public class form_3 {

	/**
	 * +1. Ввести элементы массива.
	 * -2. Определить "расстояние" (количество элементов) между наибольшим и наименьшим элементами массива.
	 * +3. Определить количество отрицательных элементов массива.
	 * +4. Вычислить сумму и среднее арифметическое всех положительных элементов массива.
	 */
	//Часть 3
	// метод создает массив указанного размера
		// и заполняет его случайными целыми числами 
		public static int[] generateArray(int size) {
			Random rnd = new Random();
			int[] array = new int[size];
			for(int i=0; i < size; i++) {
				array[i] = rnd.nextInt();
			}
			return array;
		}
		
		public static void main(String[] args) {
			// создадим массив из 5 элементов
			int[] array = generateArray(5);
			
			// выводим массив в консоль
			for(int i : array) {
				System.out.print(i + " ");
			}
			
			// считаем элементы
			int negative = 0;
			long sum = 0L;
			int positive = 0;
			int max = 0;
			int imax = 0;
			int min = 0;
			int imin = 0;
			int dist = 0;
			int tmax = 0;//test
			int timax = 0;//test
			
			for (int i = 0; i < array.length; i++) {
				min = array[i];
				imin = i;
			}
			//
			for (int i = 0; i < array.length; i++) {
				if(i > tmax) tmax = i;
				timax = tmax;
			}
			//
			for(int i : array) {
				if(i > max) max = i;
				if(i < 0) negative++;
				if(i > 0) {
					positive++;
					try {
						sum += i;
					} catch (ArrayIndexOutOfBoundsException e) {
						e.printStackTrace();
					}
				}
			}
			System.out.println();
			// выведем результат в консоль
			System.out.println("Кол-во отрицательных элементов: " + negative);
			System.out.println("Кол-во положительных элементов: " + positive);
			System.out.println("Сумма положительных элементов: " + sum);
			System.out.println("Cреднее арифметическое положительных элементов: " + sum/positive);
			System.out.println("Максимальный элемент: " + max);
			System.out.println("Индекс минимального элемента: " + imin);
			System.out.println("Индекс максимального элемента: " + tmax);
		}
	 
	}
Никак не получается вытащить индекс максимального элемента массива. Помогите с этим. Дальше я сам.
alexchromets вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма положительных элементов массива Monst3r Помощь студентам 6 25.12.2012 18:06
сумма первых двух положительных элементов массива Valechka Общие вопросы C/C++ 1 09.06.2012 00:45
сумма первых двух положительных элементов массива Valechka Помощь студентам 0 08.06.2012 21:22
QBasic. Сумма и количество положительных элементов столбца массива hohol90 Помощь студентам 2 22.10.2011 11:22
Turbo C. Сумма квадратов положительных элементов массива ТАМ Помощь студентам 2 09.12.2009 14:53