ANANYA PRAMANIK Ответов: 2

Сравнение строк в 2d массиве в java с помощью метода deepequals


пользовательский ввод n количество строк в 2d массиве
Элементы хранятся в массиве размером [n][4].
входной формат:
Первая строка входных данных-это целое число “n”, которое обозначает количество строк.
Следующие n строк содержат элементы строки

выходной формат:
если 2 строки совпадают, то разделите их дефисом
Если ни одна строка не совпадает, выведите "None".
Если размер массива отрицательный, выведите "недопустимый ввод" и завершите работу программы.

Пример Ввода 1:
5
3 1 2 4
2 4 5 1
3 1 2 4
2 4 5 1
3 1 2 4
Пример Вывода 1:
1-3
1-5
2-4
3-5

Пример Ввода 2:
3
3 1 2 4
2 4 5 1
3 4 2 5
Пример Вывода 2:
Никто

Пример Ввода 3:
-5
Пример Вывода 3:
Неверный Ввод

Что я уже пробовал:

import java.util.Arrays; 
import java.util.Scanner;
import java.lang.*;
import java.util.*; 

public class Main 
{ 
    public static void main(String[] args)
{ 
     
    Scanner sc = new Scanner(System.in); 
    int n = sc.nextInt(); 
   
    if(n <= 0)
    {
       System.out.println("Invalid Input");
    }
    else
    {
        int[][] data = new int[n][4]; 
        for (int i = 0; i < n; i++) 
        { 
            for (int j = 0; j < 4; j++) 
                { 
                    data[i][j] = sc.nextInt(); 
                }
        } 
        Object[] array = new Object[4];
        Object[] array1 = new Object[4];
        int idx = 0;
        int idx1 = 0;
        for (int i = 0; i < n; i++) 
        { 
            for (int j = 0; j < 4; j++) 
                { 
                   array[idx] = data[i][j];
                   array1[idx1] = data[i + 1][j];
                   idx++;
                   idx1++;
                    if (Arrays.deepEquals(array, array1))
                        {
                            System.out.println(i + "-" + j);
                        }
                        else
                        System.out.println("None");
                }
                }
        } 
       
    
    

        
} 

}

Richard MacCutchan

И ваш вопрос ... ?

ANANYA PRAMANIK

я не получаю желаемого результата

Richard MacCutchan

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

Member 14510381

импорт java.util.*;
импорт java.lang.*;
team_rival открытый класс {

публичный статический пустота главный(строка[] аргументы) {
Scanner SC = новый сканер(System.in);
int c=0,n=sc.nextInt();
если(n>0) {
int[][] a = новый int[n][4];
for(int i=0;i

CHill60

Какой в этом был смысл?

Member 14510381

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

Member 14510381

Если вы знаете, как разместить полнометражное решение, то скажите мне.

CHill60

Вы нажимаете кнопку "Добавить решение" и вставляете свой код в предоставленное поле ввода. Выберите соответствующее форматирование из всплывающего окна-в данном случае "блок кода". Затем вы добавляете комментарий (текст) к своему решению, чтобы объяснить, почему вы отвечаете на вопрос, которому почти 2 года и который является чьим-то домашним заданием.
Отвечать на домашние вопросы бесполезно - ОП никогда не научится.

2 Ответов

Рейтинг:
2

Member 14510381

импорт java.util.*;
импорт java.lang.*;
team_rival открытый класс {

публичный статический пустота главный(строка[] аргументы) {
Scanner SC = новый сканер(System.in);
int c=0,n=sc.nextInt();
если(n>0) {
int[][] a = новый int[n][4];
for(int i=0;i


wseng

Ваш ответ не завершен.

Member 14510381

Я опубликовал полное решение, но оно показывало предварительный просмотр, как указано выше.Если вы знаете, как разместить полнометражное решение, то скажите мне.

wseng

Лоток оберните свой код с помощью кодовой метки

Рейтинг:
0

Patrice T

Много проблем в вашем коде
- ваш код пытается сравнить строку со следующей строкой, когда вам нужно сравнить строку со всеми другими строками. Строка 0 должна сравниваться с строкой 1, строкой 2, строкой 3 ...
- ваш сравнительный тест неуместен.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.