package com.javarush.task.pro.task05.task0508;
import java.util.Scanner;
/*
Удаляем одинаковые строки
*/
public class Solution {
public static String[] strings;
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
strings[i] = console.nextInt();
}
for (int i = 0; i < strings.length; i++) {
String currentstring = strings[i];
for (int j = 0; i < strings.length; j++) {
if (currentString.equals(strings[j])) {
currentString[i] = null;
currentString[j] = null;
}
if (currentString.equals(null)) {
currentString[i][j] == null;
break;
}
}
}
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i] + ", ");
}
}
}
Дария
10 уровень
Объясните ,пожалуйста, почему неправильно.
Решен
Комментарии (13)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ViExpert
21 апреля 2023, 10:22
1. Перед первым циклом необходимо инициализировать размер массива:
2. Ты используешь метод сканнера nextInt(), который считывает целые числа, а тебе нужны строки. Замени его на метод nextLine():
3. В 19 строке имя переменной стринг "currentstring", а дальше у тебя используется "currentString".
4. Во вложенном цикле нужно начинать не с 0 индекса, т.к. в таком случае будет сравнение элемента массива с самим собой. Необходимо сместиться на один шаг:
5. Блоки if лучше поменять местами и во втором у тебя ошибка - currentString[i][j] - у тебя здесь нет двумерного массива. В этом условии нужно написать, что если текущая строка == null, прервать шаг цикла.
0
Денис Enterprise Java Developer
21 апреля 2023, 10:20
В коде много грубых синтаксических ошибок. Как упомянул Алексей - ты пытаешься заполнить массив строк int числами,
ты сознаёшь строчную переменную currentstring, но потом пытаешься обратиться к ней как к массиву currentString[i] да еще и в имени переменной делаешь ошибку, т.е. технически обращаешься к другой (не существующей переменной).
Выражение currentString.equals(null) лишено смысла, потому как если currentString действительно null твой код упадёт с NullPointerException, во всех остальных случаях он вернёт false.
Дальше в твоём коде экс строчная переменная мутировавшая в массив мутирует еще раз, превращаясь в двумерный массив.
currentString[i][j] == null;
Тебе стоит очень серьезно заняться базовым синтаксисом языка и понять как он работает.
Что такое переменная, как ее объявить, как к ней обратиться, как работает присвоение, что такое тип данных.
Дальше почитать про чуть более сложные вещи типа сравнения данных, зачем проверять что-то на null и как это делать правильно.
Сейчас в твоём коде написана чушь с явно подсмотренными правильными идеями типа объявления буферной переменной currentstring и сравнения именно её с остальными элементами массива перед их занулением. Готов допустить, что ты не знаешь зачем это сделано.
0
ДарияExpert
21 апреля 2023, 10:27
currentString я как раз таки поняла. Мы ее берем и в нее кладем массив изначальный и там его заново пересчитываем от j. я забыла написать j+1 (моя ошибка). а затем пересчитанные значения сравниваем между собой
0
Денис Enterprise Java Developer
21 апреля 2023, 10:37
А то что у тебя строка в рамках одного метода сначала в массив превращается потом в двухмерный массив вообще пустяк, да :)
Раз уж задача решена, посмотри как это можно было бы реализовать.
+1
ДарияExpert
21 апреля 2023, 10:39
я легла в 3 ночи и проснулась в 6 утра. задачку я эту делаю в перерывах, когда не слишком нагружена на работе. просто опечаталась.
0
ДарияExpert
21 апреля 2023, 10:39
да, а ночью я разбирала эту задачу.
0
ДарияExpert
21 апреля 2023, 10:42
спасибо, вижу
0
Денис Enterprise Java Developer
21 апреля 2023, 10:47
Ночью стоит спать (кстати именно ночью). Человеческому организму нужно не меньше 8 часов сна для нормального функционирования, особенно если оно предполагает умственную деятельность. Постарайся нормализовать график, это правда важно, поверь моему опыту, я и в ночные поработал и на двух работах доводилось впахивать - недосып это полная лажа.
Лучше по чуть-чуть занимайся в перерывах между делами или работой.
+2
Алексей
21 апреля 2023, 10:07
Для начала объясни зачем ты заполняешь массив strings целыми числами?
0
ДарияExpert
21 апреля 2023, 10:16
это я поняла, уже поменяла на Line.
0
Алексей
21 апреля 2023, 10:55
Мне даже стало интересно посмотреть на финальную версию вашего решения.
0
ДарияExpert
21 апреля 2023, 11:00
Scanner console = new Scanner(System.in);
for (int i = 0; i < 6; i ++) {
strings [i] = console.nexLine();
}
for (int = 0; i < strings.length; i++) {
String currentString = strings[i];
for (int j = i + 1; j <strings.length; j++) {
currentString = strings[i]
}
}
if (currentString.equals())
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i] + ", ");
}
}
}
0
Алексей
21 апреля 2023, 11:28
Даша, без обид) Деня выше дал правильный совет. Начнешь сначала, все встанет по полочкам, а мы, если что, всегда будем рады помочь.
0