zmienna ze spacjami

0

hejka,
mam takie pytanie-jak moge stworzyc zmienna wypelniona spacjami? tzn wiem ile tych spacji ma byc (przykladowo 10) i potrzebuje stworzyc taka zmienna ktora bedzie miala postac:

zmienna = 10x" " (czyli 10 razy spacja)

pzdr

0

Jeśli mało, to tak

String zm="    ";

jeśli dużo to tak

StringBuffer pom=new StringBuffer("");
for(int i=0;i<ileSpacji;i++)
    pom.append(" ");
Strin zm=pom.toString();
0

kurcze mialam nadzieje ze jest moze jakas gotowa funkcja typu
wpisz_cos(int ile_wartosc, wartosc)

duzo mam tych zmiennych, a wiekszosc ma miec rozne dlugosci, wiec sporo petli bedzie w programie..

0
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        System.out.println(fillString(10, '$'));
    }
    public static String fillString(int count, char c) {
        char[] chars = new char[count];
        Arrays.fill(chars, c);
        return String.valueOf(chars);
    }
}

?

0

Moje rozwiązanie jest bardziej uniwersalne, można powielać String dowolnej długości:

    private static String powielString(int count,String str)
    {
        StringBuffer pom=new StringBuffer("");
        for(int i=0;i<count;i++)
          pom.append(str);
        return new String(pom);
    }

ale niestety dużo wolniejsze. Dla count=1 000 000 oraz str=" " czas wykonania funkcji fillString() to 47 milisekund, a czas wykonania funkcji powielString() to 156 milisekund.
@misty, a po co Ci takie zmienne ?

0

@bogdans
zeby przyspieszyc mozesz sprobowac zrobic tak:
StrinbBuilder sb = new StringBuilder(str.length() * count);

  1. StringBuilder nie ma synchronizowanych metod, a nie sadze ze wielowatkowosc jest w tej chwiliproblemem, wiec Builder szybszy powinien byc od Buffera
  2. tworzysz od razy bufor o dokladnie takiej dlugosci jak wynikowy string, co uniknie niepotrzebnego kopiowania w przypadku gdy bufor / builder bedzie mial zaalokowana mniejsza tablice niz string wynikajacy z kolejnej iteracji petli

Pozdrawiam.

0

o forach musze zapomniec, za duzo tego jest w calym programie. Skorzystam z 'fill'. dzieki za wszystkie odpowiedzi!

pzdr

0

@malamyga, sprawdziłem, sposób z klasą StringBuilder jest mniej więcej o 30% szybszy.

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