klasa Scanner - wczytywanie lini

0

Jak za pomoca klasy Scanner wczytac linie, ktora nie bedzie Stringiem a poszczegolnymi elementami macierzy Int (wprowadzanie z klawiatury wierszami)? Przyklad:

1 6 77 234 3 9 78 6</code> //to jest pierwszy wiersz macierzy, wiec do macierz[0][0] ma byc wczytana 1, do macierz[0][1] 6 itd...

0
int[][] m1 = new int[3][3];
System.out.println("Liczba kolumn :"+m1[0].length);
System.out.println("Podaj wiersze macierzy");
Scanner scan = new Scanner(System.in);

for(int i=0; i<m1.length; i++) {
	System.out.print("Wiersz "+i+" >");
	String row = scan.nextLine();
	Scanner s = new Scanner(row).useDelimiter("\\s");
	int j=0;
	while(s.hasNext() && j<m1[0].length) {
		m1[i][j] = Integer.parseInt(s.next());
		j++;
	}
	if(j < m1[0].length)
		throw new IllegalArgumentException("Nie podano odpowiedniej ilości kolumn");
}
0

Można jeszcze tak:

...
int[][] m = new int[3][3];
Scanner scan = new Scanner(System.in);

for(int i=0; i<m.length; i++) {
	System.out.print("Wiersz "+i+" >");
	String row = scan.nextLine();

	int[] row_i = readIntTab(row);
	if(row_i.length != m[0].length) 
		throw new IllegalArgumentException("Nie prawidłowa ilość kolumn "+row_i.length);
	
	m[i] = row_i;
}
...
private int[] readIntTab(String s) {
	String[] cols = s.split("\\s");
	int[] tab = new int[cols.length];
	for(int i=0; i<tab.length; i++) {
		tab[i] = Integer.parseInt( cols[i] );
	}
	return tab;
}
0

Nawiazujac do wykorzystywania klasy StringTokenizer do dzielenia lancuchow znakow:

"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead."

0

Dzieki o to chodzilo, zastosowanie scanner.

Chcialbym teraz wypisac ta cala macierz tylko tak ladnie wierszami (el, jeden pod drugim) np

1 22  4 567
2  3 33    1
2 14  2  23
3  3   3   3

Normalnie wypisywalem to w ten sposob

public void wypiszMacierz()
    {
        for (int i = 0; i < macierz.length; i++)
        {
            for (int j = 0; j < macierz[i].length; j++)
            {
                System.out.println("macierz[" + i + "][" + j + "]" + macierz[i][j]);
            }
        }
    }
    

Teraz probuje cos takiego, ale nie za bardzo wiem, jak ten PrintWriter wykorzystac, mianowicie

public void wypiszMacierz()
    {
        PrintWriter wyjscie = new PrintWriter(System.out, true);
        System.out.println("\n");
        for (int i = 0; i < macierz.length; i++)
        {
            for (int j = 0; j < macierz[i].length; j++)
            {
                printf(macierz[i][j], //nie wiem jak tego uzyc tutaj
            }
        }
    }
0
public void wypiszMacierz() {
	for(int i=0; i<macierz.length; i++) {
		for(int j=0; j<macierz[i].length; j++) {
			System.out.print(macierz[i][j]+"\t");
		}
		System.out.println();
	}
}

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