» »

[JAVA] String problem!

[JAVA] String problem!

GrofMonte ::

Zanima me, kako bi bilo možno razdreti String, ki je v obliki "beseda beseda beseda beseda". Torej besede loči presledek y uporabo funkcij bi se to dalo rešit z split-om. Ampak ne smem uporabiti funkcije. Vsako besedo bi shranil v prostor v polju.

Poskusil sem, z primerjavo vsakega znaka v stringu z znakom " " ampak, mi javi napake glede polja.(NAPAKA:The type of the expression must be an array type but it resolved to String).

Prosim za kakšno idejo, in pomoč pri tem problemu.

overlord_tm ::

Sprehodis se cez string z for zanko, ko naletis na whitespace skopiras prebran del v array, ki drzi "splitano" verzijo stavka.

Tip: Java uporablja "" (dvojne) za String in '' (enojne) za char (znak). Za sprehod cez string imas funkcijo str.charAt(int i), ki ti vrne rezutlat tipa char. chare lahko v if primerjas tako kot integerje.

Spura ::

Napako je tocno to kar pise. String ni array in to ga nekje indeksno naslavljas:

String s = "abafdagdfga";
s[i] -> error

GrofMonte ::

Hvala, vama za te ideje, sem že z char.At(st) se sprehodil po stringu in primerjal ter vpišem v znak char. Zanima še me kako bi več teh charov združil v en string, ki ga na koncu vpišem v polje.

overlord_tm ::

"tralala" + 'b' da presenetljive rezultate. Lahko pa tudi uporabis StringBuffer ali StringBuilder in klices .append(char c) in potem .toString(). Se pametnejsa ideja pa je da si zapomnis zcetek in konec okna branja in potem uporabis .substring(int b, int e) za kopiranje dela stringa.

kunigunda ::

Sej charAt je tud funkcija. Ce pa samo split funkcije ne smes uporabljati lahko pa pac z str.indexOf(" ") najdes prvi space, z str.substring() ga pa rezes.

GrofMonte ::

Fora je v tem, da mamo naloge brez teh funkcij ki olajšajo vsako delo z stringi, vse je z zankami itd.. preverjanji sortiranje ..

Mam pa še vprašanje glede prenašanja polj iz funkcij oz iz classov. Imam v classu PP metodo ki mi sprejme celoten string, ki string razhrošči na posamezne besede in z tem zapolnim polje. Polje vrnem z return. Problem se pojavi pri izpisu polja, in pri deklariranju polja saj nevem, kako veliko je polje, Lahko sta v stringu 2 besedi lahko 20. Ampak v glavnem programu če dam preveliko polje mi pri izpisu izpiše od viška null polja.

Lahko na kak način vrnem polje v neko polje ki bo natanko tako veliko kot se potrebuje?

GrofMonte ::

Sem že dodal eno funkcijo ki prešteje presledke in z tem zračunamo koliko je besed vrnemo st_besed in imamo potrebno . :)

LeQuack ::

Lahko uporabiš tudi ArrayList ali kak drug List, in potem pretvoriš v navaden Array, če je to potrebno.
Quack !

LeQuack ::

Tukaj je primer celega programa z uporabo List:

import java.util.ArrayList;
import java.util.List;


public class PP {
	public static void main(String[] args) {
		String stavek = "beseda beseda beseda beseda";
		char locilo = ' ';
		
		String[] besede = razdeliStavek(stavek, locilo);
		for (String string : besede) {
			System.out.println(string);
		}
	}

	private static String[] razdeliStavek(String stavek, char locilo) {
		List<String> rezultat = new ArrayList<String>();
		String beseda = "";
		
		// Zanka skozi stavek, razdeli na besede
		for (int i = 0; i < stavek.length(); i++) {
			if(stavek.charAt(i) == locilo)
			{
				rezultat.add(beseda);
				beseda = "";
			}
			else
				beseda += stavek.charAt(i);
		}
		
		// Zadnja beseda
		if(beseda.length() > 0)
			rezultat.add(beseda);
		
		// Pretvori List v Array
		return rezultat.toArray(new String[rezultat.size()]);
	}
}
Quack !

Zgodovina sprememb…

  • spremenil: LeQuack ()

Spura ::

public static String[] razdeliStavek(String str) {
    return razdeliStavek(str, 0, 0);
}

    private static String[] razdeliStavek(String str, int idx, int words) {
        if (idx >= str.length()) return new String[words];
        int i;
        for(i = idx;i < str.length();i++) { 
            if (str.charAt(i) == ' ') {
                break;
            } 
        }
        String[] retArray = razdeliStavek(str, i+1, words + 1);
        retArray[words] = str.substring(idx, i);
        return retArray;
    }    

Rekurzivno za foro. Zdej pa moras dodelat se odvisno od robnih primerov. Kaj se zgodi ce se zadeva zacne z locilom? Kaj se zgodi ce se konca z locilom. Kaj se zgodi ce sta dve locili zapored.

GrofMonte ::

Pozdrav.. imam spet en problem pri uporabi SET /GET metod in mi uporaba teh ni najbolj jasna.. Imam primer škatle v katero polagam kocke ali jih jemam iz škatle. Na podlagi tega bi moral stalno vedet koliko kock je v škatli.

Do sedaj sem ustvaril objekt skatla z lastnostjo st_kock,

Hvala za pomoč

Zgodovina sprememb…

Spura ::

Ne razumem vprasanja, oz. vprasanje je odsotno.

bleem ::

metoda get ti vrne st_kock.

metoda set naj blo brez argumenta in samo naredi st_kock++;

koliko pa je pravilno poimenovanje set za taksno metodo pa se bi dalo debatirat.

v mainu programa instanciras objekt skatla in prozis metodo. za lepsi izpis se napisi v razredu skatla toString metodo.

bleem ::

Spura zdravo, imam eno vprašanje, kak to da se ogromno problemov lotis resevat rekurzivno? to je bilo konstruktivno vprašanje! lp

Spura je izjavil:


public static String[] razdeliStavek(String str) {
return razdeliStavek(str, 0, 0);
}

private static String[] razdeliStavek(String str, int idx, int words) {
if (idx >= str.length()) return new String[words];
int i;
for(i = idx;i < str.length();i++) {
if (str.charAt(i) == ' ') {
break;
}
}
String[] retArray = razdeliStavek(str, i+1, words + 1);
retArray[words] = str.substring(idx, i);
return retArray;
}

Rekurzivno za foro. Zdej pa moras dodelat se odvisno od robnih primerov. Kaj se zgodi ce se zadeva zacne z locilom? Kaj se zgodi ce se konca z locilom. Kaj se zgodi ce sta dve locili zapored.

Sergio ::

Zato ker je praktično za namene domačih nalog.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pomoč pri programiranju z javo

Oddelek: Programiranje
203375 (2302) milc
»

[cpp]Kako ugotoviti koliko zapisov je v arrayu?

Oddelek: Programiranje
6785 (704) technolog
»

[Java] Zamenjat char v stringu na dolocenmu indeksu?

Oddelek: Programiranje
5841 (803) TipyTop
»

C++ preštej število enk

Oddelek: Programiranje
111236 (1019) kihc
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403405 (2627) Tutankhamun

Več podobnih tem