Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив 
:(
    Опции темы
bl1zzarrd
Дата 24.11.2013, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.10.2013

Репутация: нет
Всего: нет



Пользователь вводит с клавиатуры натуральное число большее 3, которое сохраняется в переменную n. Если пользователь ввёл не подходящее число, то программа должна просить пользователя повторить ввод. Создать массив из n случайных целых чисел из отрезка [0;n] и вывести его на экран. Создать второй массив только из чётных элементов первого массива, если они там есть, и вывести его на экран.
СОБВСТВЕННО подскажите как сделать так , чтобы 2 массив аккуратно выводился на экран и в чем ошибка того ,что поледний элемент массива воторо дублируется
Код

public static void main (String [] args) {
Scanner input = new Scanner (System.in);    
System.out.println("Please, enter integer bigger then 3: ");    
int n = input.nextInt();
for (int i =0 ; i < 21 ; i++) {
if (n<=3) {System.out.println("Your value dont match conditions.Please try again."); n = input.nextInt();}
}
int EvenElements = 0;
int[] array = new int [n];

for (int j =0; j< array.length; j ++) {
    array[j]= (int)Math.floor(Math.random()*(n+1)); // 
    System.out.println(j+": "+array[j]);
    if ((array[j]%2)==0) {EvenElements++;}
System.out.println();
    int[] array1 = new int [EvenElements];
    for (int k = 0 ; k <array1.length; k++) {
        
        if ((array[j]%2)==0) {array1[k]= array[j];
        System.out.println("   "+ array1[k]); } ;
            
}

    
    
}

}

}    

PM MAIL   Вверх
bl1zzarrd
Дата 24.11.2013, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.10.2013

Репутация: нет
Всего: нет



Если же убрать цикл с k то не будет эксепшн по величине 2 массива.
Код

import java.util.Scanner;
public class Array2AsArray1 {
    
public static void main (String [] args) {
Scanner input = new Scanner (System.in);    
System.out.println("Please, enter integer bigger then 3: ");    
int n = input.nextInt();
int k =0;

for (int i =0 ; i < 21 ; i++) {
if (n<=3) {System.out.println("Your value dont match conditions.Please try again."); n = input.nextInt();}
}
int EvenElements = 0;
int[] array = new int [n];

for (int j =0; j< array.length; j ++) {
    array[j]= (int)Math.floor(Math.random()*(n+1)); // 
    System.out.println(j+": "+array[j]);
    if ((array[j]%2)==0) {EvenElements++;}
System.out.println();
    int[] array1 = new int [EvenElements];
    
        if ((array[j]%2)==0) {array1[j]= array[j];
         } ;
         System.out.println("New array:"+ array1[j]);    
    
}

}

}    
    
    



PM MAIL   Вверх
Magistrus
Дата 25.11.2013, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Код

for (int i =0 ; i < 21 ; i++) {
if (n<=3) {System.out.println("Your value dont match conditions.Please try again."); n = input.nextInt();}
}


этот кусок кода похож на бред


так думаю будет лучше

Код

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Please, enter integer bigger then 3: ");
        int n =0;
        do
        {
          if (n<4) System.out.println("Your value dont match conditions.Please try again.");
          else break;
          n = input.nextInt();
        }
        while(n<4);
        int EvenElements = 0;
        int[] array = new int[n];
        for (int j = 0; j < array.length; j++)
        {
            array[j] = (int) Math.floor(Math.random() * (n + 1)); //
            System.out.println(j + ": " + array[j]);
            if ((array[j] % 2) == 0)
            {
                EvenElements++;
            }
            System.out.println();
        }
        int[] array1 = new int[EvenElements];
        int k=0;
        for (int j = 0; j < array.length; j++)
        {
            if ((array[j] % 2) == 0 && array[j]!=0)
            {
                array1[k++] = array[j];
                System.out.println("   " + array[j]);
            }
        }
    }


основная твоя ошибка в том, что ты пытался внутри цикла заполнения первого массива, создавать второй.


Это сообщение отредактировал(а) Magistrus - 25.11.2013, 11:44
--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
bl1zzarrd
Дата 25.11.2013, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 3.10.2013

Репутация: нет
Всего: нет



Спасибо,а зачем ты использовал k++ , а не просто приравнял k 
PM MAIL   Вверх
Magistrus
Дата 26.11.2013, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Жив
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 14.6.2006
Где: г. Одесса

Репутация: нет
Всего: 1



Цитата(bl1zzarrd @  25.11.2013,  22:57 Найти цитируемый пост)
Спасибо,а зачем ты использовал k++ , а не просто приравнял k  

это индекс элемента, во втором массиве, количество его элементов меньше, чем первого.

По идее если тебе надо было бы просто вывести нечетные числа хватило бы и одного цикла. 


--------------------
~ вот такая вот загагулина ~ 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.