package com.javarush.task.pro.task07.task0712;
/*
Первые объекты
*/
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
String s = new String("Привет"); // 1-я строка ???
int[] data = new int[2]; //2-я строка
Scanner console = new Scanner(""); //3-я строка ???
}
}
Anonymous #2501635
11 уровень
Как соотнести созданные объекты с циклами??Спасибо.
Решен
Комментарии (15)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ДмитрийExpert
29 июня 2024, 14:56
В чём суть вопроса? Смотри, создаёшь несколько циклов со счётчиком (на 10, 5 и 2 итераций соответственно) и в тело этих циклов помещаешь инструкцию по созданию новых объектов. Как создаются новые объекты знаешь же?
0
Anonymous #2501635
29 июня 2024, 15:10
Если я правильно понял, то требуется создать инструкцию по созданию новых объектов вместо вложенного цикла. Так или нет??? Что она из себя должна представлять???Просто описать создание объектов в общем виде???
0
ДмитрийExpert
29 июня 2024, 15:17
Нет, суть в том, чтобы написанная тобою программа создавала указанное количество объектов в процессе своего жизненного цикла.
В методе main(String[]) должно создаваться 17 разных объектов в общей сложности. Типы и количество объектов указаны в условии задачи.
Итак, что такое создание нового экземпляра класса (объекта) и как это делается в классическом виде? Для этих целей в языке программирования Java существует оператор new.
Когда я просто пишу в коде следующее:
То это фактически означает, что я создаю в контуре своей Java-программы новый экземпляр класса String.
Могу вот так написать:
Здесь я создал новый одномерный целочисленный массив, который вмещает в себя 5 элементов. Я думаю, что идея ясна?
0
Anonymous #2501635
29 июня 2024, 15:18
Ещё вопрос: как соотнести счётчик цикла с созданным объектом???
0
ДмитрийExpert
29 июня 2024, 15:23
И важно отметить, что такого рода запись уже сама по себе является полноценной и вполне самостоятельной инструкцией. Если от тебя просто требуют создать экземпляры в программе, то тебе даже не нужно связывать их с конкретными переменными. Вспомни, как мы работаем с циклами? Что мы помещаем в "тело" цикла?
Верно, мы помещаем туда набор инструкций, которые мы хотим выполнить N-ное количество раз. Тебе просто стоит понять, что такая форма записи позволит нам создать требуемое количество объектов. А использовать нам их совершенно необязательно, так как данный учебный материал несёт в себе совершенно иную идею. Здесь нас учат обращаться с объектами. Создавать их, в самую первую очередь.
0
ДмитрийExpert
29 июня 2024, 15:36
А зачем его как-то соотносить напрямую? Счётчик нужен для того, чтобы мы могли явным образом задать необходимое количество итераций (если примитивно, то здесь идёт речь о том, сколько раз выполнится тело нашего цикла).
Если ты просто выполняешь инструкцию по созданию нового объекта, то значение счётчика (в данном конкретном случае) будет обозначать то, сколько объектов ты создашь. Всё будет зависеть от того, как ты в конечном счёте реализуешь своё решение.
Приведу тебе пример, чтобы было понятнее. Если бы я столкнулся с задачей такого типа:
Просто возьми и создай в своей программе 20 экземпляров класса Object.
То я бы поступил следующим образом:
Давай разберём этот код теперь. Что я здесь написал? Я написал, что инструкция new Object(); будет выполнена в моём случае ровно 20 раз. Для этого я использовал соответствующую управляющую конструкцию в лице цикла со счётчиком. Каждое единократное выполнение этой инструкции создаст мне один новый экземпляр класса Object.
Это я тебе исключительно в качестве примера привёл. Это не решает твою задачу, но подход ты должен будешь понять. Просто перенеси всё это на условия своей задачи.
0
Anonymous #2501635
29 июня 2024, 15:38
Спасибо, я попробую.
+1
ДмитрийExpert
29 июня 2024, 15:40
Попробуй конечно же. Ты саму суть понял?
0
Anonymous #2501635
2 июля 2024, 07:12
С Вашего позволения:
Написал следующее:
public class Solution {
public static void main(String[] args) {
for (int i = 0; i < 10; i++)
new String();
for (int i = 0; i < 5; i++)
new int [5];
for (int i = 0; i < 2;i++ )
new Scanner();
}
}
но валидатор "ругается", не принимая "new int[5]";
Не могу понять, где ошибка?
0
ДмитрийExpert
2 июля 2024, 09:19
Там даже не столько валидатор будет ругаться (хотя и он тоже), но и сам компилятор. Здесь присутствует синтаксическая ошибка. Забыл тебе указать эту тонкость.
Дело в том, что создание любого объекта воспринимается, как отдельная инструкция (ну или может быть частью какой-то более сложной составной инструкции). Интерес заключается в том, что это не распространяется на создание тех или иных массивов, хоть они и тоже, безусловно, являются такими же объектами, как и все остальные.
Если ты создаёшь массив, то тебе его нужно связать с какой-то инструкцией, так как создание массива, как я уже заметил, само по себе не является отдельной инструкцией с точки зрения языка. Соответственно, ты столкнёшься с такой вот ошибкой:
Какие могут быть пути решения? Их фактически 2. Ты можешь создать какую-нибудь локальную переменную и в процессе каждой новой итерации помещать туда ссылку на новый массив. Или же вызывать какой-нибудь метод, который ожидает целочисленный одномерный массив на вход.
Короче говоря, ты можешь сделать вот так и твой код будет работать. Немного бессмысленно, так как мы будем терять доступ ко всем нашим созданным объектам (за исключением последнего), но в контексте данной задачи это является решением:
0
Anonymous #2501635
3 июля 2024, 13:36
Здравствуйте ещё раз. Не знаю, плакать или смеяться, но валидатор пишет в красных тонах: "Не выполнены все требования задачи". Не знаю, как быть.
0
ДмитрийExpert
3 июля 2024, 14:43
По какому именно требованию в этот раз не прошло?
0
Anonymous #2501635
5 июля 2024, 05:39
Да просто пишет: "Не выполнены все требования задачи"! Более ничего....
0
Денис Enterprise Java Developer
5 июля 2024, 07:24
Сделай без циклов, скорее всего тесты на задачу лексические, т.е. тупо идёт подсчёт конкретных паттернов в коде.
+1
ДмитрийExpert
5 июля 2024, 08:50
Да, Денис верно говорит скорее всего. Всё сделано верно, но валидатор, вероятно, заточен под другое решение. Ты не будешь никогда так писать код при работе над реальными проектами, но чтобы решить задачу сделай всё то же самое, но уже без использования каких бы то ни было управляющих конструкций. Напиши всё в жёстком императивном стиле, да и всё... И забудь об этой задаче!
+1