Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[c#] integer krijgt onverklaarbare waarde

Pagina: 1
Acties:

  • speedydown
  • Registratie: Juli 2007
  • Laatst online: 27-06 12:25

speedydown

Icter van lik-me-vestje

Topicstarter
Ik hoop dat er iemand is die mij hiermee kan helpen.

de String preXY krijgt de waarde "10"

hierna wil ik het converteren naar een x en een y positie als integer. echter wordt de x waarde 49 en de y waarde 48.

weet iemand wat ik fout doe?

C#:
1
2
3
4
5
6
7
8
9
10
 
for (int l = 0; l < 5; l++)
                        {
                            string preXY = checkposities[l];
                            int x = Convert.ToInt32(preXY[0]);
                            int y = Convert.ToInt32(preXY[1]);
                            if (settings.Speler1getallen[x][y] < 90)
                            {
                            }
                         }

Speedydown.nl !!!


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Je debugged niet goed?

Simpelweg door je code heensteppen en je ziet wat waar staat.

  • speedydown
  • Registratie: Juli 2007
  • Laatst online: 27-06 12:25

speedydown

Icter van lik-me-vestje

Topicstarter
Gomez12 schreef op zondag 16 december 2012 @ 18:37:
[...]

Je debugged niet goed?

Simpelweg door je code heensteppen en je ziet wat waar staat.
dat heb ik dus net gedaan :) echter worden de x en y waarden inneens een heel ander getal die ik niet kan verklaren(en ik dus een out of bounds krijg)

Speedydown.nl !!!


  • SlaadjeBla
  • Registratie: September 2002
  • Laatst online: 19:05
ascii 49 = "1" ascii 48 = "0"
je converteert dus naar ascii codetabel index

Gebruik Int32.Parse(string). Dat werkt wel. Dat is niet heel veilig, dus dit is beter

C#:
1
2
3
4
5
6
7
8
int getal = 0;
if(Int32.TryParse(str, out getal)){
 //getal is hier het getal
}
else
{
 //conversie gefaald
}

[ Voor 44% gewijzigd door SlaadjeBla op 16-12-2012 18:42 ]


  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Precies, Parse of TryParse gebruiken. Convert doet andere dingen ;)

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

string foo = "10";
char a = foo[0]; //een expressie met waarde '1';
char b = foo[1]; //een expressie met waarde '0';

char is een 16 bit integraal unsigned type, een conversie naar int is dan ook gewoon een zero-extension van de unicode waarde van het teken.

als je zeker bent van dat alle strings 2 tekens zijn, is het makkelijkste wellicht om:
C#:
1
2
3
4
string str = "10";
int i = int.Parse(str);
int x = i / 10;
int y = i % 10;


of je kan de string splitsen in 2 substrings en ze los converteren.

[ Voor 33% gewijzigd door MLM op 17-12-2012 13:45 ]

-niks-


  • speedydown
  • Registratie: Juli 2007
  • Laatst online: 27-06 12:25

speedydown

Icter van lik-me-vestje

Topicstarter
aha ik snap het. heb hier dus echt 2 uur mee lopen prutsen :( in iedergeval bedankt allen!

Speedydown.nl !!!


  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 19:04

Sebazzz

3dp

johnkeates schreef op zondag 16 december 2012 @ 18:42:
Precies, Parse of TryParse gebruiken. Convert doet andere dingen ;)
Nee, onwaar.
Using the ToInt32(String) method is equivalent to passing value to the Int32.Parse(String) method. value is interpreted by using the formatting conventions of the current thread culture.
If you prefer not to handle an exception if the conversion fails, you can call the Int32.TryParse method instead. It returns a Boolean value that indicates whether the conversion succeeded or failed.
Geeft ook gelijk het verschil tussen Parse en TryParse aan.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


  • SlaadjeBla
  • Registratie: September 2002
  • Laatst online: 19:05
hier werd echter ToInt32(char) gebruikt, wat andere resultaten oplevert.
A 32-bit signed integer that represents the UTF-16 encoded code point of the value parameter.
Pagina: 1