• ,

level08.lesson11.home06; Вся семья в сборе - решил, но не понял один момент

Друзья можете объяснить как работает конструкция:
for (int i = 1; i < childCount; i++)
{
Human child = this.children.get(i);
text += ", "+child.name;
}

если быть точнее интересует момент:
Human child = this.children.get(i);

Как я понял, создается объект класса Human и ему присваивается в цикле каждое значение ребенка, но мне не понятно куда конкретно в объекте child присваивается this.children.get(i); какой переменной? можете пояснить этот момент?

level08.lesson11.home06; Вся семья в сборе

package com.javarush.test.level08.lesson11.home06;

/* Вся семья в сборе
1. Создай класс Human с полями имя (String), пол (boolean), возраст (int), дети (ArrayList).
2. Создай объекты и заполни их так, чтобы получилось: два дедушки, две бабушки, отец, мать, трое детей.
3. Вывести все объекты Human на экран.
*/

import java.util.ArrayList;
import java.util.List;

public class Solution
{
public static void main(String[] args)
{
ArrayListchild = new ArrayList();
Human child1 = new Human(«Edgar», true, 24, null);
Human child2 = new Human(«Amilia», false, 20, null);
Human child3 = new Human(«Effy», false, 18, null);
child.add(child1);
child.add(child2);
child.add(child3);
ArrayListparentM = new ArrayList();
ArrayListparentF = new ArrayList();
Human mother = new Human(«Oksana», false, 45,child);
parentM.add(mother);
Human father = new Human(«Serg», true, 50, child);
parentF.add(father);
Human grandF = new Human(«Kolya», true, 53, parentF);
Human grandM = new Human(«Galya», false, 54, parentF);
Human grandFf = new Human(«Ivan», true, 54, parentM);
Human grandMm = new Human(«Luda», false, 54, parentM);
ArrayListfamily = new ArrayList();
family.add(child1);
family.add(child2);
family.add(child3);
family.add(mother);
family.add(father);
family.add(grandF);
family.add(grandFf);
family.add(grandMm);
family.add(grandM);

for(int i = 0; i<family.size(); i++){
System.out.println(family.get(i));
}

}

public static class Human
{
String name;
boolean sex;
int age;
Listchildren = new ArrayList();

public Human(String name, boolean sex, int age, ArrayListchildren){
name = this.name;
sex = this.sex;
age = this.age;
children = (ArrayList) this.children;

}

public String toString()
{
String text = "";
text += «Имя: » + this.name;
text += ", пол: " + (this.sex? «мужской»: «женский»);
text += ", возраст: " + this.age;

int childCount = this.children.size();
if (childCount > 0)
{
text += ", дети: "+this.children.get(0).name;

for (int i = 1; i < childCount; i++)
{
Human child = this.children.get(i);
text += ", "+child.name;
}
}

return text;
}
}

}

Ребята, помогите пожалуйста, почему на выходе выводятся ноли?

javarush.test.level07.lesson09.task03 решил, есть вопрос по ArrayList

Условия задачи:
/* Слово «именно»
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
3. Используя цикл for вывести результат на экран, каждый элемент списка с новой строки.
*/

Я добавил так:
ArrayListlist = new ArrayList();
list.add(«мама»);
list.add(«мыла»);
list.add(«раму»);

Есть ли метод для добавления группы объектов за раз?
Погуглил, не нашел.
  • ,

level07.lesson09.task01 Удалить из одного массива элементы, номера которых содержатся во втором массиве

Добрый день!
Объясните пожалуйста. Есть 2 массива:
ArrayList<Integer> list= new ArrayList<Integer>();
ArrayList<Integer> listdelete= new ArrayList<Integer>();

В первом- просто левые значения, во втором- порядковые номера элементов, которые нужно удалить из первого.
Вот так вот:

for (int i = 0; i < listdelete.size(); i++) {
int a=listdelete.get(listdelete.size() -i - 1);
list.remove(a);
}

Программа удаляет правильно.

А вот так вот:

for (int i = 0; i < listdelete.size(); i++) {
list.remove(listdelete.get(listdelete.size() -i - 1));
}

Удаляет не порядковые номера, а элемены содержащие эту цифру.
Т.е. Если в listdelete первый в списке будет номер 5, то он удалит не не 5й элемент в массиве list, а все элементы содержащие в себе значение 5.

В чем разница в записях? Я думал они аналогичны.

Три массива, не проходит проверку

Почему не проходит проверку?
package com.javarush.test.level07.lesson09.task01;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/* Три массива
1. Введи с клавиатуры 20 чисел, сохрани их в список и рассортируй по трём другим спискам:
Число делится на 3 (x%3==0), делится на 2 (x%2==0) и все остальные.
Числа, которые делятся на 3 и на 2 одновременно, например 6, попадают в оба списка.
2. Метод printList должен выводить на экран все элементы списка  с новой строки.
3. Используя метод printList выведи эти три списка на экран. Сначала тот, который для x%3, потом тот, который для x%2, потом последний.
*/

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        ArrayList<Integer> list = new ArrayList<Integer>();
        ArrayList<Integer> list3 = new ArrayList<Integer>();
        ArrayList<Integer> list2 = new ArrayList<Integer>();
        ArrayList<Integer> listAll = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 20; i++) {
            list.add(sc.nextInt());
        }
        for (int i = 0; i < 20; i++) {
            int ai = list.get(i);
            if (ai%3 == 0) {
                list3.add(ai);
            }
            else if (ai%2 == 0) {
                list2.add(ai);
            }
            else if (ai%3 == 0 && ai%2 == 0) {
                list3.add(ai);
                list2.add(ai);
            }
            else {
                listAll.add(ai);
            }
        }
        printList(list3);
        printList(list2);
        printList(listAll);
    }

    public static void printList(List<Integer> list) {
        for (int e : list) {
            System.out.println(e);
        }
    }
}

level05.lesson12.bonus03

Задача по алгоритмам
Написать программу, которая:
1. вводит с консоли число N > 0
2. потом вводит N чисел с консоли
3. выводит на экран максимальное из введенных N чисел.

public class Solution
{

    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int maximum = 0;
        int s = Integer.parseInt(reader.readLine());
        if (s > 0)
        {
            ArrayList<Integer> list = new ArrayList<Integer>();
            for (int i = 0; i < s; i++)
            {
                list.add(Integer.parseInt(reader.readLine()));
            }
            for (int i = 0; i < list.size(); i++)
            {
                if (list.get(i) > maximum)
                    maximum = list.get(i);
            }

            System.out.println(maximum);
        }
        else
            return;
    }
}


Всем условиям соответствует, но проверку не проходит, в чем может быть причина?
  • ,

level06.lesson11.home02

Здравствуйте!
Заранее благодарю за помощь!
Я считаю, что:
условия выполенны
код скомпилировован и запцушен без ошибок
вывод тоже верен
но…
Помогите, люди добрые)
public class Cat {
    public Cat() {
    }
    public static ArrayList<Cat> cats = new ArrayList<Cat>();

    public static void main(String[] args) {
        for (int i = 0; i <10; i++) {
            cats.add(new Cat());
        }
        printCats();
    }

    public static void printCats() {
       System.out.print(cats.size());
    }
}

level07.lesson09.task05

Всем привет! Подскажите, по какой причине может не проходить проверку на сервере. В IDE отрабатывает.

package com.javarush.test.level07.lesson09.task05;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Удвой слова
1. Введи с клавиатуры 10 слов в список строк.
2. Метод doubleValues должен удваивать слова по принципу a,b,c -> a,a,b,b,c,c.
3. Используя цикл for выведи результат на экран, каждое значение с новой строки.
*/

public class Solution
{
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayListlist = new ArrayList();
for (int i=0; i<10; i++){
list.add(reader.readLine());
}

ArrayListresult = doubleValues(list);

for (int i=0; i<result.size(); i++){
System.out.println(result.get(i));
}
}

public static ArrayListdoubleValues(ArrayListlist) {
int j=0;
for (int i=1; i<=10; i++){
list.add((j+1), list.get(j));
j=j+2;
}

return list;
}
}

level07.lesson12.home02

Битый час мучаю эту задачу.
Сначала не мог понять что от меня хотят!
Потом, когда понял, не мог реализовать, так называемый, перенос.
Те способы, какими я пытался это сделать,
и по логике (моей логике) они должны были работать — не работали.
Накопал где-то тут вот такое
al.add(al.remove(0));

Для меня это пока магия, но я хотел бы разобраться как оно работает.
И самое главное — программа работает, но проверку не проходит!
Помогите пожалуйста!
  • ,

level07.lesson06.task01

всем салют

ребята, подскажите пожалуйста, в чем дело.

В Идее все работает нормально, но не проходит тестирование, пишет что
программа выполнялась слишком долго и была закрыта

на сайте же пишет что
программа работает неправильно


package com.javarush.test.level07.lesson06.task01;

/* 5 различных строчек в списке
1. Создай список строк.
2. Добавь в него 5 различных строчек.
3. Выведи его размер на экран.
4. Используя цикл выведи его содержимое на экран, каждое значение с новой строки.
*/

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Solution
{
    public static void main(String[] args) throws Exception
    {
       ArrayList<String> list = new ArrayList<String>();
        for (int i = 0; i < 5; i++)
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String s = reader.readLine();
            list.add(s);
        }
        System.out.println(list.size());

        for (int i = 0; i < list.size(); i++)
        {
            System.out.println(list.get(i));
        }//Напишите тут ваш код

    }
}


  • ,

com.javarush.test.level07.lesson09.task03

package com.javarush.test.level07.lesson09.task03;

/* Слово «именно»
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
3. Используя цикл for вывести результат на экран, каждый элемент списка с новой строки.
*/

import java.util.ArrayList;

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("мама");
        arr.add("мыла");
        arr.add("раму");
        String imm = "именно";

        for(int i = 0; i < 2; i++)
        arr.add(i*2+1, imm);

        for (int i = 0; i < arr.size(); i++)
            System.out.println(arr.get(i));
        //Напишите тут ваш код

    }
}


Не могу понять в чем дело ( не проходит проверку…

Вывод:
мама
именно
мыла
именно
раму