🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
10 messages
10 total messages Started by VotA Thu, 27 Nov 2003 22:19
Czegos chyba nie kapuje :(
#243
Author: VotA
Date: Thu, 27 Nov 2003 22:19
20 lines
1407 bytes
Mam taki kawalek kodu:

int i=0
int x=0;
string tekst= "tralalalalalalalalalalalala";
while (tekst[x].ToString() != null)
{
i++;
x++;
}

Co jest nie tak? Ma on liczyc znaki... Ale zawiesza sie. Ja widze ze program
wykonuje to tak:
1. Deklaruje zmienna typu int i o wartosci 0
2. Deklaruje zmienna typu int x o wartosci 0
3. Deklaruje zmienna typu string tekst o wartosci
tralalalalalalalalalalalala
4. Dopuki znak o nr x w tekst nie rowna sie null to wykonuj nastepujace
instrukcje x++, i++
Co zle robie?
Re: Czegos chyba nie kapuje :(
#244
Author: Daniel Dusiñski www.dusinski.prv...
Date: Thu, 27 Nov 2003 22:36
25 lines
1740 bytes
> int i=0
> int x=0;
> string tekst= "tralalalalalalalalalalalala";
> while (tekst[x].ToString() != null)
> {
> i++;
> x++;
> }
>
> Co jest nie tak? Ma on liczyc znaki... Ale zawiesza sie.

Dok�adniej wywala wyj�tek  System.IndexOutOfRangeException (przekroczenie
zakresu).
Po prostu dla x > tekst.Length (a to w ko�cu w Twoim programie zachodzi...) masz
rzucany wyj�tek. Program ko�czy swoje dzia�anie.

Jeszcze raz:  dla     string tekst = "aa";    poprawne b�dzie odwo�anie
tekst[1], ale na pewno nie b�dzie poprawne odwo�anie tekst[100]   czy te�
tekst[2] !!!

PS. A nie mo�esz po prostu u�y�   tekst.Length ???
--

Pozdrawiam,      |       www.dusinski.prv.pl               gg 4563846
Daniel                |       Aby wys�a� do mnie maila wejd� na stron� www
Re: Czegos chyba nie kapuje :(
#245
Author: Kacza
Date: Thu, 27 Nov 2003 22:51
15 lines
1224 bytes
*Daniel Dusiński, www.dusinski.prv.pl* wrote in
<news:bq5ua7$9pf$1...@news.atman.pl>:


> PS. A nie możesz po prostu użyć   tekst.Length ???

a jak dla mnie to wyglada na blad w petli :)
zamiast while () {} zrob do {} while () 
mam nadzieje, ze taka konstrukcja jest w C# :D 

Daniel pozdrowionka z kola .NET ;)
-- 
Pozdr, 
znowu Kacza ;)
http://www.dsoft.xu.pl
Re: Czegos chyba nie kapuje :(
#246
Author: Daniel Dusiñski www.dusinski.prv...
Date: Thu, 27 Nov 2003 23:26
21 lines
1750 bytes
> zamiast while () {} zrob do {} while ()
> mam nadzieje, ze taka konstrukcja jest w C# :D

Konstrukcja " do{} while() " jest ...
... ale tutaj nie pomo�e.
B��dny jest w og�le zapis:  " tekst[x].ToString() != null "

Wyja�nienie:
(1) Dla wszystkich  x < tekst.Length   wyra�enie  "tekst[x].ToString  co� tam
zwr�ci (jeszcze jest OK)
(2) Ale kiedy dojdziemy do x == tekst.Length ... to takie wyra�enie NIC nie
zwr�ci. Zanim zd��y cokolwiek zwr�ci� zostanie zg�oszony wyj�tek przekroczenia
zakresu.

> Daniel pozdrowionka z kola .NET ;)
Dzi�ki ;-))))

--

Pozdrawiam,      |       www.dusinski.prv.pl               gg 4563846
Daniel                |       Aby wys�a� do mnie maila wejd� na stron� www
Re: Czegos chyba nie kapuje :(
#249
Author: VotA
Date: Thu, 27 Nov 2003 23:53
38 lines
2128 bytes
[ciach]
>
> Dok�adniej wywala wyj�tek  System.IndexOutOfRangeException (przekroczenie
> zakresu).
> Po prostu dla x > tekst.Length (a to w ko�cu w Twoim programie
zachodzi...) masz
> rzucany wyj�tek. Program ko�czy swoje dzia�anie.
>
> Jeszcze raz:  dla     string tekst = "aa";    poprawne b�dzie odwo�anie
> tekst[1], ale na pewno nie b�dzie poprawne odwo�anie tekst[100]   czy te�
> tekst[2] !!!
>
> PS. A nie mo�esz po prostu u�y�   tekst.Length ???

Teoretycznie tak. Ale ja patrze sobie w przyszlosc i zastanawiam sie np nad
tym jak mialbym zrobic aby zmienial mi sie znak. Np aby w tekscie "cos tam"
c zmienilo sie d, o na p, s na k etc
I wtedy wlasnie uzylbym sobie czegos takiego:
while(tekst[x].ToString()!=null)
{
if (tekst[x]=="c")
    tekst[x]=d;
//...
}
Oczywiscie tutaj zamiast if-a lepiej byloby uzyc case ale jakos dla
przykladu podalem instrukcje if. w sumie sam nie wiem czemu...

Ale chyba wlasnie wpadl mi do glowy nowy pomysl wykorzystujacy wlasnie
tekst.Lenght i petli for.

int x = text.Lenght
For (int i = 0; i!=x; i++)
{
    //...
}

Cos takiego na przyklad moglo by dzialac?
Re: Czegos chyba nie kapuje :(
#250
Author: Miros³aw Prag³owski
Date: Fri, 28 Nov 2003 00:36
24 lines
1754 bytes
> Teoretycznie tak. Ale ja patrze sobie w przyszlosc i zastanawiam sie np
nad
> tym jak mialbym zrobic aby zmienial mi sie znak. Np aby w tekscie "cos
tam"
> c zmienilo sie d, o na p, s na k etc
> I wtedy wlasnie uzylbym sobie czegos takiego:
> while(tekst[x].ToString()!=null)...
a nie lepiej co� w style test.Replace( "c", "d") - nie pamietam jak to jest
w C# - patrz MSDN.

> Ale chyba wlasnie wpadl mi do glowy nowy pomysl wykorzystujacy wlasnie
> tekst.Lenght i petli for.
>
> int x = text.Lenght
> For (int i = 0; i!=x; i++)
> {
>     //...
> }

Je�li ju� to lepiej
for (int i = 0; i<x; i++)

-- 
Mirek
Re: Czegos chyba nie kapuje :(
#251
Author: Losiuu
Date: Fri, 28 Nov 2003 01:03
21 lines
1328 bytes
> Ale chyba wlasnie wpadl mi do glowy nowy pomysl wykorzystujacy wlasnie
> tekst.Lenght i petli for.
>
> int x = text.Lenght
> For (int i = 0; i!=x; i++)
> {
>     //...
> }
>
> Cos takiego na przyklad moglo by dzialac?

Tak, to bedzie dzialac. Ale po co x deklarujesz, chyba przejrzysciej bedzie
tak:
 for (int i = 0; i!= text.Lenght; i++)
 {
     //...
 }

pozdr
Losiuu
Re: Czegos chyba nie kapuje :(
#252
Author: Daniel Dusiñski www.dusinski.prv...
Date: Fri, 28 Nov 2003 06:39
17 lines
1698 bytes
 > Ale ja patrze sobie w przyszlosc i zastanawiam sie np nad
> tym jak mialbym zrobic aby zmienial mi sie znak.

A ja, oczywi�cie patrz�c w przysz�o��, zastanowi� bym si� nad konstrukcj�:

string tekst = "Cos tam lalala";
foreach( char znak in tekst) {    // <- ZASTOSUJ  TA  P�TLE
     Console.Write(znak);  // Albo cokolwiek innego...
}

PS. Popatrz na przestrze� nazw System.Collections.   To si� naprawd� przyda
(oczywi�cie patrz�c w przysz�o�� ;-) !!!

--

Pozdrawiam,      |       www.dusinski.prv.pl               gg 4563846
Daniel                |       Aby wys�a� do mnie maila wejd� na stron� www
Re: Czegos chyba nie kapuje :(
#247
Author: Kacza
Date: Fri, 28 Nov 2003 09:30
14 lines
1319 bytes
*Daniel Dusiński, www.dusinski.prv.pl* wrote in
<news:bq617r$e3s$1...@news.atman.pl>:
> Konstrukcja " do{} while() " jest ...
> ... ale tutaj nie pomoże.
> Błędny jest w ogóle zapis:  " tekst[x].ToString() != null "

mozliwe :) a string nie jest automatycznie konczony zerem ??
Wtedy sens mialoby porownywanie text[x] do nulla


-- 
Pozdr, 
znowu Kacza ;)
http://www.dsoft.xu.pl
Re: Czegos chyba nie kapuje :(
#248
Author: Daniel Dusiñski www.dusinski.prv...
Date: Fri, 28 Nov 2003 12:03
23 lines
2478 bytes
> Wtedy sens mialoby porownywanie text[x] do nulla

Nie !!! Nie mia�o by sensu.
Postaraj si� dok�adniej przeczyta� mojego poprzedniego maila...

Samo "text[x]"  dla x== text.Length wywali wyj�tek !!!
Nawet gdyby ten string faktycznie ko�czy� si� znakiem null (w�a�ciwie to nie
wiem czy si� tak ko�czy, NAJPRAWDOPODOBNIEJ   N-I-E ) - to i tak by� si� o tym
nie dowiedzia� !!!  Zanim wyra�enie  text[x] cokolwiek zd��y zwr�ci�, zostanie
zg�oszony wyj�tek... i koniec.

PS. Pami�taj, �e w C# masz do czynienia z kodem nadzorowanym - u�ycie b��dnego
(tutaj - za du�ego) indeksu powoduje wyrzucenie wyj�tku, a nie zwr�cenie jakiej�
warto�ci. To nie C++ (dok�adniej - nie nadzorowany C++) gdzie dla 'int
tablica[1]'  mog�e� si� spokojnie odwo�ywa� do 'tablica[1000]' (no mo�e o tyle
niespokojnie, �e mog�e� co� tam napsu�... ale dzia�a�o). W C# je�li masz tablic�
(czy te� string) zawieraj�c� 10 element�w, to tylko do tych 10 element�w mo�esz
si� odwo�ywa�. I do �adnych innych !!!

--

Pozdrawiam,      |       www.dusinski.prv.pl               gg 4563846
Daniel                |       Aby wys�a� do mnie maila wejd� na stron� www
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads