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

Co tu należy poprawić?

Object Storage Arubacloud
0 głosów
198 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 214 wizyt
pytanie zadane 26 marca 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)
0 głosów
1 odpowiedź 184 wizyt
pytanie zadane 9 grudnia 2019 w Java przez Piotrek1604 Użytkownik (560 p.)
0 głosów
2 odpowiedzi 533 wizyt
pytanie zadane 1 kwietnia 2019 w Java przez Paweł Szewczyk Obywatel (1,410 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...