Wątek przeniesiony 2016-11-13 01:08 z Java przez bogdans.

Nieprawidłowe wypełnianie macierzy literami

0

Stworzyłem macierz, która ma być podstawą do przekodowywania tekstu (porównuje literki w macierzy i w tekście i jak są takie same to podmienia na indeks pola literki z macierzy). Chciałem wypełniać macierz po kolei pojedynczymi literami, ale program wypełnia całą macierz od razu tylko jedną. Dopiero zaczynam z JAVA i wszelkie rady są mile widziane.

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

class Koduj
{
	private String[][] Macierz = new String[5][5];
	
	public void setMacierz(String we)
	{
		for(int i=0; i<5;i++)
			for(int j=0; j<5; j++)
			{
				Macierz[i][j] = we;
			}
		wyswietl(Macierz);
		
	}
	
	public void wyswietl(String[][] Macierz)
	{
	    for(int i = 0; i < 5; i++) {
	        for(int j = 0; j < 5; j++) {
	          System.out.print(Macierz[i][j] + "\t");
	        }
	        System.out.println("");
	      }
	      System.out.println("");
	}
	
	public void setKey(String[][] Macierz)
	{
		int[] s = new int[2];
		
		for(int i=0; i<5;i++)
			for(int j=0; j<5; j++)
			{
				s[0] = i;
				s[1] = j;
				Macierz[i][j] = String.valueOf(s);
			}
	}
	
	public void Code(String wej)
	{
		
		
		if(wej.equals(Macierz))
		{
			setKey(Macierz);
			wej = Macierz.toString();
		}
		else
			wej = wej;
		
		System.out.println(wej);
		
	}
	
	
}


public class lab02_01  {
	
	public static void main(String[] args){
		
		int wybor;
		int x = 0;
		int y = 0;
		
		Scanner scan = new Scanner(System.in);
		String we;
		String wej = new String();
		
		Koduj k = new Koduj();
		
		System.out.println("1. wprowadzanie wartosci macierzy");
		System.out.println("2. wprowadzanie slowa");

		wybor = scan.nextInt();
		switch(wybor)
		{
		case 1:
		{
			System.out.println("wprowadz wartosci macierzy");
			for(int i = 0; i < 24; i++)
			{
				 we = scan.nextLine();
				 System.out.println(we);
				 k.setMacierz(we);
				 
			}
			
			System.out.println("2. wprowadzanie slowa");
			wybor = scan.nextInt();
		}break;
		
		case 2:
		{
			System.out.println("wprowadz slowo");
			wej = scan.nextLine();
			for(int i = 0; i < wej.length();i++)
			{
				wej.charAt(i);
				k.Code(wej);
			}
		}break;
		
		
		}
	}
	
}
0

Skoro chcesz mieć macierz znaków, dlaczego utworzyłeś sobie macierz ciągów znaków?

0

Żeby uniknąć kłopotów z typami. Na początku była ona char, ale miałem tyle różnych błędów mismatch, że wolałem, żeby macierz była tego samego typu co słowo które chcę przekodować

0

Od kiedy to unikanie problemów jest ich rozwiązywaniem?
Zacznij powoli - utwórz macierz znaków i spróbuj wczytać do niej ciąg znaków. Najpierw spróbuj zrobić to ręcznie na kartce kilka razy, a dopiero potem otwórz środowisko i zacznij pisać kod.

0

Ten sam problem, nie ważne czy char czy String

1

Na początek wyrzuć ten kod za okno, napisz raz jeszcze od początku, podczas pisania myśl.
Przykład głupoty kodu, jest oczywiste, że każde wywołanie tej metody

    public void setMacierz(String we)
    {
        for(int i=0; i<5;i++)
            for(int j=0; j<5; j++)
            {
                Macierz[i][j] = we;
            }
        wyswietl(Macierz);
 
    }

wypełnia całą macierz jedną wartością. Przy okazji, metoda, która zmienia wartości w macierzy nie powinna tej macierzy wyświetlać.

0

Ok, udało mi się rozwiązać problem z macierzą. Teraz chciałbym stworzyć funkcję która na podstawie macierzy ustawia klucz do kodowania. Napisałem coś takiego:

	public void setKey(String[][] Macierz)
	{
		int[] s1 = new int[5];
		int[] s2 = new int[5];
		
		for(int i = 0; i<5;i++)
			for(int j=0;j<5;j++)
			{
				s1[i] = i;
				s2[i] = j;
				Macierz[i][j] = String.valueOf((s1[i] + s2[j]));
			}
				
		/*for(int i=0; i<5;i++)
			for(int j=0; j<5; j++)
			{
				s[0] = i;
				s[1] = j;
				Macierz[i][j] = String.valueOf(s);
			}*/
	}

ale nie działa. Chciałbym ściągać indeksy macierzy i później podmieniać je za litery z odpowiednich komórek, np. a = 00, ale coś nie idzie. Stworzyłem dwie tablice do przechowywania indeksów, w pętli wsadzam kolejne indeksy, lecz nie sprawdza się.

1 użytkowników online, w tym zalogowanych: 0, gości: 1