Chcę pozwolić użytkownikowi wprowadzić długość kolumny. Powiedzmy „4”. Następnie powinien wydrukować tak:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

W kwadracie 4 na 4.

Nie oczekuję, że mój kod będzie blisko rozwiązania, którego szukam. To tylko prosta linia wydruku. Ale ten wymaga pewnych niezbędnych modyfikacji.

Jak sobie z tym poradzić?


package MagicMatrix;

import java.util.Arrays;
import java.util.Scanner;

public class Matrix
{

    Scanner scanner = new Scanner(System.in);   

    public static void main(String[] args)
    {

        new Matrix();

    }

    public Matrix() 

    {

        System.out.println("Give column length of matrix\n");

        int var00 = 1;
        int columnlength = scanner.nextInt();

        int [][] matrix = new int [columnlength][columnlength];


        for (int i=0; i < columnlength; i++) 
        {
            for (int j=0; j < columnlength; j++ )
            {
                matrix[i][j] = var00;
                var00++;
            }
        }

        for (int i=0; i < colomnlength; i++) 
        {
            for (int j=0; j < colomnlength; j++ )
            {

            System.out.print(matrix[i][j]); // The big question!!!!

            }
        }
    }

}
0
Twannemannn 19 listopad 2019, 16:49
2
Czy zamiast zrzucać mnóstwo kodu, możesz określić, co dokładnie nie działa z Twoim kodem?
 – 
Frontear
19 listopad 2019, 16:51
Jeśli przewiniesz w dół, zobaczysz linię oznaczoną „Wielkie pytanie!!!” tam trzeba dokonać pewnych adaptacji!
 – 
Twannemannn
19 listopad 2019, 16:54
Prosimy o wyjaśnienie za pomocą oświadczeń błędu lub problemów pojawiających się podczas budowania logiki.
 – 
Pulkit Jatav
19 listopad 2019, 16:55
Jatav Obecnie wydruk daje 12345678910111213141516, ale chcę, żeby było jak 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 W rzędach i kolumnach 4 na 4
 – 
Twannemannn
19 listopad 2019, 16:59

3 odpowiedzi

Nie jestem pewien, czy w pełni rozumiem Twoje pytanie, być może to rozwiąże Twój problem:

    for (int i=0; i < colomnlength; i++) 
    {
        System.out.print(matrix[i][0]);
        for (int j=1; j < colomnlength; j++ )
        {

            System.out.print(matrix[i][j]); // The big question!!!!

        }
        System.out.println();
    }
0
Maurice Perry 19 listopad 2019, 16:56

Wbrew temu, co powiedziałeś w swoim pytaniu, faktycznie byłeś dość blisko rozwiązania. Musisz tylko zamienić var1 (nie mam pojęcia, skąd to się wzięło) na var00 i zaraz po wewnętrznej pętli (tej, która iteruje z j) dodać {{X3 }}, aby przejść do następnego wiersza po jednym wierszu. To teoretycznie powinno działać.

for (int i=0; i < columnlength; i++) 
    {
        for (int j=0; j < columnlength; j++ )
        {
            matrix[i][j] = var00;
            var00++;
        }
    }

for (int i=0; i < columnlength; i++)
    {
        for (int j=0; j < columnlength; j++ )
            {
                System.out.print(matrix[i][j] + " "); 
            }
        System.out.println();
    }

Edycja: zauważyłem, że dzwoniłeś raz columnlength i raz colomnlength powinieneś prawdopodobnie to naprawić. Dodaj również spację po matrix[i][j], wykonując + " ", aby między liczbami było trochę spacji

2
THess 19 listopad 2019, 17:05
1
OHHH Dzięki człowieku!! to było to. (o tym var00 i var1 zmieniłem to podczas edycji mojego pytania, ale zapomniałem zmienić je wszystkie). Ale twoja sugestia była IDEALNA!!
 – 
Twannemannn
19 listopad 2019, 17:04
Cieszę się, że mogłem pomóc, nie zapomnij zaznaczyć tego jako poprawnej odpowiedzi, jeśli zadziałało
 – 
THess
19 listopad 2019, 17:06

Możesz to osiągnąć, używając również tylko dwóch pętli.

import java.util.Scanner;

public class Hello
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);   

    int columnlength = scanner.nextInt();

    int [][] matrix = new int [columnlength][columnlength];
    int counter = 1;

    for(int i = 0;i<columnlength;i++) {
        for(int j=0;j<columnlength;j++) {
            matrix[i][j] = counter;
            System.out.print(counter+++"\t");
        }
        System.out.println();
    }

}

}
1
Dhrumil Patel 19 listopad 2019, 17:43
Wypełnianie matrycy licznikiem prawdopodobnie nie jest tym, co chce zrobić w powstałym programie, ale po prostu mieć jakieś przykładowe dane. W każdym razie zazwyczaj lepiej jest oddzielić kod o różnej funkcjonalności, np. wypełnienie matrycy i wydrukowanie jej, nawet jeśli powoduje to powstanie trochę płyty kotłowej.
 – 
Aziuth
19 listopad 2019, 17:53