• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Co tu należy poprawić?

VPS Starter Arubacloud
0 głosów
194 wizyt
pytanie zadane 3 października 2015 w Java przez uczeń1998 Obywatel (1,930 p.)
package sad;

import java.awt.List;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/// program ma dzielic na slowa, co tu nalezy poprawic?
public class asd {
	static int i=1;
	static int nextI=0;
	static int a=0;
	static String[] tablica= new String[10];
    static String[] podzielNaSlowa(String tekst){
		do{
			if(Character.isWhitespace(tekst.charAt(i))){
				tablica[a]=tekst.substring(nextI, i);
				nextI=i;
				a++;
			}
			i++;
		}while(i<tekst.length());
    	
    	return tablica;
    }
	
public static void main(String[] args){
	System.out.print(podzielNaSlowa("To ma zostac podzielone"));
 }
}

 

1 odpowiedź

+1 głos
odpowiedź 3 października 2015 przez Javowiec Pasjonat (21,560 p.)
wybrane 4 października 2015 przez uczeń1998
 
Najlepsza

Metoda w twoim kodzie: podzielNaSlowa("tekst do podzielenia") zwracała tablicę.

W związku z tym, przy wywołaniu metody System.out.print(tablica) zostawała wywoływana metoda .toString() tej tablicy - przez to dostawałeś brzydki szlaczek jakichś liter.

Aby wyświetlić słowa w tablicy musisz po niej iterować jakąś pętlą. Ja w swoim przykładzie uzyłem pętli for.

Dodatkowo Twój warunek w ifie był niedopracowany. Nie wrzucał do tablicy ostatniego słowa tekstu, ponieważ po ostatnim słowie nie ma spacji.

W ładny sposób można podzielić tekst przy pomocy metody Stringa: .split("znaki, które mają być usuniętę z tekstu i jednocześnie pokazują, w którym miejscu tekst należy podzielić").

/*
 * Program dzieli tekst na części
 */
public class asd {
	// Nie inicjujemy tablicy (= new String[10]), ponieważ metoda .split() zwraca już utworzoną tablicę
    static String[] tablica;
    
    // Metoda dzielącą tekst na części
    static String[] podzielNaSlowa(String tekst){
    	// Dzielimy tekst w miejscu gdzie jest spacja metodą .split.
    	// Metoda ta zwraca tablicę Stringów,
    	// którą przypisujemy do zmiennej tablica
    	tablica = tekst.split(" ");
        
    	// Zwracamy tablicę z podzielonymi słowami
        return tablica;
    }
     
public static void main(String[] args){
	// Metoda zwraca tablicę, którą zapisujemy do zmiennej
	String[] tablicaSłów = podzielNaSlowa("To ma zostac podzielone");
	
	// Iterujemy po tablicy pętlą for i wyświetlamy pokolei każde słowo
	for (int i = 0; i < tablicaSłów.length; i++) {
		System.out.println(tablicaSłów[i]);
	}
 }
}
komentarz 4 października 2015 przez Tomasz90 Nałogowiec (25,140 p.)
Ewentualnie można użyć klasy StringTokenizer bo splitem podzieli uwzględniając jeden separator a np wyrazy możesz mieć po przecinkach itd.

http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
komentarz 4 października 2015 przez Javowiec Pasjonat (21,560 p.)

Dobrze, że o tym mówisz smiley

Można też użyć wyrażenia regularnego w metodzie .split():

tekst.split("[, ]+");

Czyli w nawiasach kwadratowych wpisujemy znaki (w tym przykładzie przecinek i spację), które mają odzielać tekst, a znaczek plus mówi, że mogą one wystąpić raz lub więcej razy w tekscie wink

komentarz 4 października 2015 przez uczeń1998 Obywatel (1,930 p.)
kurde bardzo często są gotowe metody do rozwiązania zadania, a ja się ******** w robienie czegoś od nowa, muszę zaznajomić się z dokumentacją. Dzięki za pomoc ;)))

Podobne pytania

0 głosów
3 odpowiedzi 211 wizyt
pytanie zadane 26 marca 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)
0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 9 grudnia 2019 w Java przez Piotrek1604 Użytkownik (560 p.)
0 głosów
2 odpowiedzi 524 wizyt
pytanie zadane 1 kwietnia 2019 w Java przez Paweł Szewczyk Obywatel (1,410 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...