ďťż
 
Char[] to string ďťż
 
Char[] to string
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Char[] to string



Barteq - 14-05-2006 00:49
Char[] to string
  Witam,
Mam problem z zamianą tablicy znaków Char na stringa. Znalazlem w
internecie jakies przyklady ale niestety program nie chce sie skompilowac
poprawnie. Bede wdzieczny za kazda podpowiedz.





Barteq - 14-05-2006 00:49

  int i;
for (i=0; i<6; i++){
sdolar = new Character(bufd[i]).toString();

}
Napisalem taka petle, jest jednak problem bo pod zmienna sdolar chcialbym
miec caly napis a nie tylko ostatnia litere, Jak zrobic zeby cala zmienna
byla przechowywana pod nazwa sdolar?
Pozdrawiam




lobo - 14-05-2006 00:49

  int i;
for (i=0; i<6; i++){
sdolar = sdolar + new Character(bufd[i]).toString();

}

pozdrawiam lobo




Zbyszek Malec - 14-05-2006 00:49

  Barteq wrote (tak! stara dobra wrotka!):

> Mam problem z zamianą tablicy znaków Char na stringa. Znalazlem w
> internecie jakies przyklady ale niestety program nie chce sie skompilowac
> poprawnie. Bede wdzieczny za kazda podpowiedz.

Nie ma czegoś takiego jak Char (przynajmniej nie w standardowej javie).
Jest char i Character.
Jeśli masz tablicę char[] to String posiada odpowiedni konstruktor.
Jeśli masz tablicę Character[] to zamiast tworzyć 100 stringów pomocniczych
lepiej skorzystać ze StringBuildera (ewentualnie StringBuffera).

StringBuilder builder = new StringBuilder(table.length);
for(...)
{
builder.append(tab[i]);
}

String result = new String(builder);

Tablica Character[] jest swoją drogą podejrzana. Skąd ty ją masz?

--
Zbigniew Malec Ustronie:104 gg:2756100
"Do badań stosowane będą wysokorozdzielcza elektroforeza kapilarna i
wysokoczuły spektrometr mas z plazmą indukcyjnie sprzężoną połączone za
pomocą aspirującego mikronebulizera."





Zbyszek Malec - 14-05-2006 00:49

  lobo wrote (tak! stara dobra wrotka!):

> int i;
> for (i=0; i<6; i++){
> sdolar = sdolar + new Character(bufd[i]).toString();
>
> }

To jest trochę straszne rozwiązanie.

--
Zbigniew Malec Ustronie:104 gg:2756100
"Do badań stosowane będą wysokorozdzielcza elektroforeza kapilarna i
wysokoczuły spektrometr mas z plazmą indukcyjnie sprzężoną połączone za
pomocą aspirującego mikronebulizera."




Barteq - 14-05-2006 00:49

  Dziekuje za pomoc, oczywiście mam tablice char[]. Uzywam takiej funkcji:
char bufd[] = new char[31 - 25];
str.getChars(25, 31, bufd, 0);
W ten sposob pobieram odpowiednie dane z interesujacego mnie pliku
tekstowego, ponieaz te dane potrzebne mi sa do wykonania na nich operacji
matematycznych, musze je zamienic na stringa, pozniej na zmienna typu
float. Moze to troche nieprofesjonalne rozwiazanie, ale niestety nie znam
innego. Jestem poczatkujacym programista.

Pozdrawiam




Piotr Kalinowski - 14-05-2006 00:49

  Barteq napisał(a):
> Dziekuje za pomoc, oczywiście mam tablice char[]. Uzywam takiej funkcji:
> char bufd[] = new char[31 - 25];
> str.getChars(25, 31, bufd, 0);
> W ten sposob pobieram odpowiednie dane z interesujacego mnie pliku
> tekstowego, ponieaz te dane potrzebne mi sa do wykonania na nich
> operacji matematycznych, musze je zamienic na stringa, pozniej na
> zmienna typu float. Moze to troche nieprofesjonalne rozwiazanie, ale
> niestety nie znam innego. Jestem poczatkujacym programista.

Zamiast wyciągać tablicę znaków, a później zamieniać ją na String,
możesz użyć funkcji substring(int, int):
String sub = str.substring(25, 31);

Zobacz też:
http://java.sun.com/j2se/1.4.2/docs/...ing(int,%20int)

Pozdrawiam




Zbyszek Malec - 14-05-2006 00:49

  Barteq wrote (tak! stara dobra wrotka!):

> Dziekuje za pomoc, oczywiście mam tablice char[]. Uzywam takiej funkcji:
> char bufd[] = new char[31 - 25];
> str.getChars(25, 31, bufd, 0);

Pokaż większy kawałek kodu, bo to wygląda trochę przekombinowanie.

> W ten sposob pobieram odpowiednie dane z interesujacego mnie pliku
> tekstowego, ponieaz te dane potrzebne mi sa do wykonania na nich operacji
> matematycznych, musze je zamienic na stringa, pozniej na zmienna typu
> float. Moze to troche nieprofesjonalne rozwiazanie, ale niestety nie znam
> innego. Jestem poczatkujacym programista.

A jaki format ma ten plik? Pokaż kawałek, może da się go jakoś łatwiej
wczytywać (np. klasą Scanner).

--
Zbigniew Malec Ustronie:104 gg:2756100
"Do badań stosowane będą wysokorozdzielcza elektroforeza kapilarna i
wysokoczuły spektrometr mas z plazmą indukcyjnie sprzężoną połączone za
pomocą aspirującego mikronebulizera."




Barteq Barteq - 14-05-2006 00:49

  plik ma format .txt Oto kod, chcialbym zaznaczyc ze program juz dziala,
jestem przekonany ze mozna to zrobib bardziej profesjonalnie, na razie nie
wiem jednak jak
try {
//url = new
URL("http://bankowy.wp.pl/waluty.html?POD=1&b=2&bankN=&d1="+data+"");
url = new URL("http://www.nbp.pl/Kursy/KursyA.html");
InputStreamReader in = new InputStreamReader(url.openStream());
BufferedReader br = new BufferedReader(in); // Deklarujemy bufor i
łączymy go ze strumieniem
FileWriter fw = new FileWriter(""+data+".txt");
BufferedWriter bw = new BufferedWriter(fw);
int i=0;
while (true) //zpisujemy odpowiednie dane do pliku
{
line = br.readLine();
i++;
if (i==65) bw.write(i + " Euro " + line + " ");
if (i==45) bw.write(i + " Dolar " + line + " ");
if (i==150) bw.write(i + " Rubel " + line + " ");
if (i==100) bw.write(i + " Korona czeska " + line + " ");
if (i==75) bw.write(i + " Frank szwajcarski " + line + " ");
if (i==151 ) break;

}
br.close();
bw.close();
}
catch(IOException f) {
System.err.println("Błąd " + e);
}
//otwieramy plik i pobieramy interesujace tablice znakow

try {
BufferedReader in = new BufferedReader(new
FileReader(""+data+".txt"));
String str;
while ((str = in.readLine()) != null) {

char bufd[] = new char[31 - 25];
str.getChars(25, 31, bufd, 0);




Zbyszek Malec - 15-05-2006 00:09

  Barteq Barteq wrote (tak! stara dobra wrotka!):

> plik ma format .txt

To jest tylko rozszerzenie. Mi chodziło o sposób ułożenia danych w pliku.

> Oto kod, chcialbym zaznaczyc ze program juz dziala,
> jestem przekonany ze mozna to zrobib bardziej profesjonalnie, na razie nie
> wiem jednak jak

Przede wszystkim powinieneś rozdzielić funkcjonalność pomiędzy metody. Jak
byś nazwał metodę która wykonuje to co opisałeś? Moim zdaniem dobrą nazwą
było by:
PołączSięPobierzDaneZNetuPotemZapiszDoPlikuANAstęp niePrzetwórzTeDane();

Moim zdaniem za długa. Masz tu conajmniej kilka niezależnych
funkcjonalności i ja bym to rozdzielił.

class CurrencyClient
{
public void connect() throws IOException;
public List<Currency> readData() throws IOException;
//ewentualnie Map czy coś innego
public void disconnect() throws IOException;
}

Zapisywanie do pliku i odczyt zrzuciłbym na oddzielną klasę. Przetwarzanie
tych danych na jeszcze inną.

> try {
> //url = new
> URL("http://bankowy.wp.pl/waluty.html?POD=1&b=2&bankN=&d1="+data+"");
> url = new URL("http://www.nbp.pl/Kursy/KursyA.html");

Generalnie nie jest dobrą praktyką takie hardkodowanie stałych. Lepiej
umieścić je w jakichś zmiennych (np final) i z nich korzystać. Jak będziesz
chciał wprowadzić zmiany, będzie ci dużo łatwiej.

> InputStreamReader in = new InputStreamReader(url.openStream());
> BufferedReader br = new BufferedReader(in); // Deklarujemy bufor i
> łączymy go ze strumieniem
> FileWriter fw = new FileWriter(""+data+".txt");
> BufferedWriter bw = new BufferedWriter(fw);
> int i=0;
> while (true) //zpisujemy odpowiednie dane do pliku
> {
> line = br.readLine();

Tu nie jest za dobrze. Nie sprawdzasz rezultatu tego readLine. A co jeśli
strumień się skończy i dostaniesz null?

> i++;
> if (i==65) bw.write(i + " Euro " + line + " ");
> if (i==45) bw.write(i + " Dolar " + line + " ");
> if (i==150) bw.write(i + " Rubel " + line + " ");
> if (i==100) bw.write(i + " Korona czeska " + line + " ");
> if (i==75) bw.write(i + " Frank szwajcarski " + line + " ");
> if (i==151 ) break;

To jest bardzo podejrzane. Jest taki antywzorzec zwany "magic numbers".
Zdecydowanie powinieneś unikać takich stałych w kodzie. Jeśli musisz to
robić w taki sposób, to chociaż trzymaj je w zmiennych.

> }
> br.close();
> bw.close();
> }
> catch(IOException f) {
> System.err.println("Błąd " + e);
> }
> //otwieramy plik i pobieramy interesujace tablice znakow

Po co zapisywać dane do pliku a zaraz po tym z niego czytać? Nie lepiej
wczytać dane, zapamiętać je gdzieś (np. w List albo Map czy co tam nie
potrzebujesz) a potem dopiero zapisać je do pliku (o ile potrzebujesz kopii
na dysku w ogóle)?

> try {
> BufferedReader in = new BufferedReader(new
> FileReader(""+data+".txt"));
> String str;
> while ((str = in.readLine()) != null) {
>
> char bufd[] = new char[31 - 25];
> str.getChars(25, 31, bufd, 0);

Jak już ktoś napisał powinieneś raczej użyć metody substr z klasy String.
result = str.substr(25, 31);

No i nie sprawszasz czy str nie jest nullem (co sugeruje dokumentacja do
metody readLine klasy BufferedReader).

--
Zbigniew Malec Ustronie:104 gg:2756100
"Do badań stosowane będą wysokorozdzielcza elektroforeza kapilarna i
wysokoczuły spektrometr mas z plazmą indukcyjnie sprzężoną połączone za
pomocą aspirującego mikronebulizera."
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= String line; if (line=="cos"){...}....problem [Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?= Variable type (position <number>) in EXECUTE STATEMENT '<string>' INTO does not match returned column type Problem z funkcja mysql_real_escape_string() na bazie mysql [psql] Funkcja =?ISO-8859-2?Q?=B3=B1cz=B1ca_stringi?= Sql Serv 2000 - String z lista parametrem funkcji ? [pl/sql] usuwanie znaku nowej lini ze stringa Firebird 1.5, Invalid argument in EXECUTION STATEMENT - cannot convert to string [oracle] jak wyciągnąć jeden znak ze stringa/zmiennej?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • sulimczyk.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com