/ 2 массива 1. Создать массив на 10 строк. 2. Создать массив на 10 чисел. 3. Ввести с клавиатуры 10 строк, заполнить ими массив строк. 4. В каждую ячейку массива чисел записать длину строки из массива строк, индекс/номер ячейки которой совпадает с текущим индексом из массива чисел. Вывести содержимое массива чисел на экран, каждое значение выводить с новой строки. /

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String ms[] = new String[10];
        int mn[] = new int[10];
        for (int i = 1; i < ms.length; i++)
        {
            ms[i] = reader.readLine();
        }
        for (int c = 1; c < mn.length; c++)
        {
            mn[c] = ms.length;
            for (int u = 1; u < ms.length; u++)
            {
                System.out.println(mn);
            }

        }

    }

}

В консоли выдаёт [I@74a14482 - много таких строчек...Где ошибка?Я конечно писав код не совсем понимал что делаю, интуитивно, но по моему тут есть логика)))Помогите найти ошибку, Спасибо.

задан 12 Янв, 04:03

REDAS's gravatar image

REDAS
74
одобрено: 5%


Блин, я затупил, всё правильно, я просто писал стринги однобуквенные, сори запарился, прошёл тест.

ссылка

опубликован 12 Янв, 06:55

REDAS's gravatar image

REDAS
74
одобрено: 5%

1

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

(12 Янв, 07:28) Апполинарий

Уже закрыли.

(12 Янв, 07:12) AlexeyY

Всех благодарю, как вопрос закрывать?

(12 Янв, 07:10) REDAS

@AlexeyY будем считать, что коллега ошибся по неопытности
но все равно неприятно, конечно

(12 Янв, 07:05) Апполинарий

Благодарность для слабаков facepalm

(12 Янв, 07:03) AlexeyY
3

красавчик
и свой собственный комментарий отметил как решение задачи))))

(12 Янв, 07:02) Апполинарий

Закройте вопрос тогда, отметьте ответ, который помог, как правильный - галочка слева от ответа (над лайком).

(12 Янв, 07:02) AlexeyY
2

стринги вполне могут быть и однобуквенные))))
но тогда и длины строк будут = 1

(12 Янв, 06:58) Апполинарий

Что делает строка 14? зачем вообще 2 цикла for один в другом? значение i для обоих массивов одинаково - а вы пытаетесь всему массиву присвоить значение одного длины.

ссылка

опубликован 12 Янв, 04:06

Lezenford's gravatar image

Lezenford
2395
одобрено: 32%

изменено 12 Янв, 04:13

Да, пардон. Сейчас внесу правки в коммент...

(12 Янв, 04:12) Lezenford
1

Вы задачи перепутали, условие почитайте.) Хотя, некоторые утверждения верны...

(12 Янв, 04:09) Ivan Java

в строках 8 и 12 отсчет следует начинать с 0 а не с 1(т.к. нумерация элементов массива начинается с 0)
иначе у тебя цикл работает только 9 раз вместо нужных 10
почему в строке 15 вложенный цикл? вынеси его из из цикла если хочешь распечатать
а лучше просто сотри строки 15, 16 и 18 и распечатывай длины строк сразу после их вычисления
[I@74a14482 - это ссылка на непримитив (в данном случае - массив)
потому что у тебя почему-то распечатывается массив а не значение его элемента
чтобы распечатать значение элемента массива надо в цикле к нему обратиться например так System.out.println(mn[c]);

ссылка

опубликован 12 Янв, 04:42

%D0%90%D0%BF%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%B0%D1%80%D0%B8%D0%B9's gravatar image

Апполинарий
50918
одобрено: 17%

изменено 12 Янв, 04:47

у меня код работает
убрал вложенный цикл
распечатка рез-тов - в том же цикле что и подсчет длин строк
отсчет циклов поставил с 0
ну и mn[c] = ms[c].length()
как еще помочь я не знаю))))
могу код конечно выложить... но не буду...

(12 Янв, 05:35) Апполинарий
1

пардон
конечно же правильнее
mn[c] = ms[c].length();
скобочки добавить надо

(12 Янв, 05:30) Апполинарий

mn[c] = ms[c].length; - выдаёт ошибку, cannot resolve symbol length. - Попробуй сам в идее.

(12 Янв, 05:16) REDAS

14-я строка mn[c] = ms.length; - ты в каждую ячейку массива записываешь длину массива строк (естественно она =10)
следует так
mn[c] = ms[c].length; - так в каждую ячейку массива будет записываться длина соответствующей строки из параллельного массива строк

(12 Янв, 04:52) Апполинарий
1

mn[c] = ms.length; - Эту строку изменили? Она 10-ки выдает.

(12 Янв, 04:52) Ivan Java

15, 16, 18 строки удалил? этот цикл лишний

(12 Янв, 04:50) Апполинарий

Изменил 8 и 12 строку, изменил вывод на System.out.println(mn[c]), теперь выводит кучу цифр "10".

(12 Янв, 04:46) REDAS

Вложенный цикл for лишний. Массив чисел нужно заполнять длиной каждого элемента из массива строк, а вы сохраняете длину массива строк.


ms.length; - длина самого массива ms
ms[2].length(); - длина элемента под индексом 2 в массиве ms

Пример устройства массива:

ссылка

опубликован 12 Янв, 04:13

Ivan%20Java's gravatar image

Ivan Java
1.8k19
одобрено: 48%

изменено 12 Янв, 04:39

Индексация элементов в массивах начинается с нуля. Условия выполнения обоих циклов нужно исправить.

(12 Янв, 04:31) Ivan Java

Вывод соответственно нужно подкорректировать.

(12 Янв, 04:15) Ivan Java
-1

Конкретно где ошибки?

ссылка

опубликован 12 Янв, 04:43

REDAS's gravatar image

REDAS
74
одобрено: 5%

1

mn[c] = ms[c].length();
после length надо скобочки, когда дело касается строк
у массива (когда идет речь о длине массива) - наоборот, скобок не нужно
в том же цикле, где подсчитываются длины строк поставь строку с выводом, удалив вложенный цикл
то есть во втором цикле будет
mn[c] = ms[c].length();
system.out.println(mn[c]);

(12 Янв, 05:49) Апполинарий
1

Должен работать - это стандартная запись и она правильная по своей сути. Ты запрашиваешь длину строки определенного элемента. Если ms - это массив типа String. Если ты поменял массивы и ms - массив типа int - то не пройдет, у int нет метода возврата длины А лучше выложи в комментарии обновленный код, включая все импорты.

(12 Янв, 05:33) Lezenford

Плаваю немного конечно, изменил строки, остался вопрос как правильно записать вывод. И как изменить эту строку mn[c] = ms.length; - уже понял что выдаёт 10ки потому что выводит длинну массива ms. Но допустим mn[c] = ms[c].length; не работает...значит как то по другому, как?

(12 Янв, 05:28) REDAS

ivan java прав
REDAS не надо торопиться
мы за вас можем решить задачу.мы практически это сделали
но пользы вам от этого не будет
вы в самом начале пути, эти основы надо понять и усвоить
без них никак не получится
спокойненько сядь и разбери каждую строку кода
ничего сложного тут нет
но понимание требуется

(12 Янв, 05:23) Апполинарий
1

Ну а если более конкретно, судя по последним вашим вопросам, вам не мешало бы подтянуть теорию по устройству, работе циклов и массивов в Java. Ответы всех пользователей на ваш вопрос верны. Если мы вам выложим готовый код, то вы данную задачу решите, а далее снова будут возникать вопросы, так как в таком случае знаний у вас особо не прибавится.

(12 Янв, 05:18) Ivan Java

for (int i = 1; i < ms.length; i++)... Что будет с элементом ms[0]?

(12 Янв, 04:50) Ivan Java

Конкретно ошибки в: 8-й, 12-й, 14-й и 17-й строке. А 15,16,18 - удалить.

(12 Янв, 04:47) Ivan Java
-1
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String ms[] = new String[10];
        int mn[] = new int[10];
        for (int i = 0; i < ms.length; i++)
        {
            ms[i] = reader.readLine();

            for (int c = 0; c < mn.length; c++)
            {
                mn[c] = ms.length[c]();
                System.out.println(mn[c]);

            }

        }
    }

}

Обновлённый код, выдаёт ошибку Error:(26, 34) java: array required, but int found

ссылка

опубликован 12 Янв, 06:16

REDAS's gravatar image

REDAS
74
одобрено: 5%

Код в студию

(12 Янв, 07:38) Lezenford

Всё сделал, теперь единицы выдаёт в консоль...

(12 Янв, 06:54) REDAS
1

Эту задачу в комментариях уже дважды целиком решили...

(12 Янв, 06:53) Lezenford
3

в строку 11 поставь скобку } и убери ее из строки 19
в строке 14 вместо
mn[c] = ms.length [c] ();
следует написать mn[c] = ms[c].length(); - потому что это длина (length) строки, лежащей под индексом [с] в массиве ms

(обращение к элементам массива осуществляется через индекс в квадратных скобках, расположенный после имени массива)
НЕ ТОРОПИСЬ И ВДУМЫВАЙСЯ В ТО ЧТО ПИШЕШЬ
тебя никто не подгоняет, а в спешке получится только дольше

(12 Янв, 06:30) Апполинарий
1

14 строка неверная. Апполинарий уже привел корректную строку дважды в комментариях. Зачем вы сделали второй цикл внутри первого? сейчас у вас на каждый ввод производится перезапись всех значений. Т.е. вы прочитали число с консоли и запустили цикл, по которому в весь массив mn записали данные (а заодно и вывелись на экран). Потом ввели второе число - и снова заполнили весь массив mn с самого начала, по факту поменяв только 1 цифру. Это не логично, как минимум.

(12 Янв, 06:21) Lezenford
1

14-ю строку исправь на: ... = ms[c].length();

(12 Янв, 06:19) Ivan Java
Ваш ответ
включить просмотр

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3

Задан: 12 Янв, 04:03

Просмотров: 146 раз

Отредактирован: 12 Янв, 07:38