Letters omzetten naar getallen

Status
Niet open voor verdere reacties.

Alieas

Gebruiker
Lid geworden
27 dec 2007
Berichten
27
Ik heb een opdracht van school gekregen maar ik kom niet verder dan dit, dat ik heb geprogrammeerd.
De opdracht dat ik moet maken is als volgt:

Als je met je telefoon een berichtje wil versturen,dan moet
Je op cijfers drukken om letters op het scherm te krijgen. Zo zitten a,b en achter de knop 2 en d,e en f achter 3 enz.

Ik krijg steeds de foutmelding

Cannot convert type char to string.


Code//

Code:
string woord;
            int lengte;
            string resultaat;
            bool foutwoord = false;

            woord = Convert.ToString(textBox1.Text);
            
            
            if (woord == woord.ToLower())
            {
                lengte=woord.Length;
                for(int i=0;i<lengte;)

                    switch (resultaat)
                    {

                        case 'a': resultaat = resultaat2; break;
                        case 'b': resultaat = resultaat2; break;
                        case 'c': resultaat = resultaat2; break;
                        case 'd': resultaat = resultaat3; break;
                        case 'e': resultaat = resultaat3; break;
                        case 'f': resultaat = resultaat3; break;
                        case 'g': resultaat = resultaat4; break;
                        case 'h': resultaat = resultaat4; break;
                        case 'i': resultaat = resultaat4; break;
                        case 'j': resultaat = resultaat5; break;
                        case 'k': resultaat = resultaat5; break;
                        case 'l': resultaat = resultaat5; break;
                        case 'm': resultaat = resultaat6; break;
                        case 'n': resultaat = resultaat6; break;
                        case 'o': resultaat = resultaat6; break;
                        case 'p': resultaat = resultaat7; break;
                        case 'q': resultaat = resultaat7; break;
                        case 'r': resultaat = resultaat7; break;
                        case 's': resultaat = resultaat7; break;
                        case 't': resultaat = resultaat8; break;
                        case 'u': resultaat = resultaat8; break;
                        case 'v': resultaat = resultaat8; break;
                        case 'w': resultaat = resultaat9; break;
                        case 'x': resultaat = resultaat9; break;
                        case 'y': resultaat = resultaat9; break;
                        case 'z': resultaat = resultaat9; break;
                        
                           
                    }

code//

erg bedankt

groet,

Alieas
 
Laatst bewerkt door een moderator:
het is wel makkelijk om te weten wat voor foutmelding.
En daarnaast ook handig om je huidige code te plaatsen waardoor de foutmelding gegenereert wordt.
 
zet eens "" om de letters heen ipv ''
Dus "a" ipv 'a'

Want je geeft een string mee in de switch.. en die wil je dan vergelijken met een char
dubbele quotes ( "" ) is een string
enkele quotes ( '' ) representeert een char
 
Nou beheers ik absoluut geen C#, maar je doen een switch(resultaat), terwijl resultaat nog geen waarde heeft?
 
dat klopt ook ja..
Daarnaast heb je geen variabelen aangemaakt die resultaat1, resultaat2 etc heten.

Je for-loop is ook niet helemaal goed.

Code:
for(int i=0;i<lengte; i++){

}
 
Laatst bewerkt:
Ik ben een stukje verder,maar zit even weer vast:D

ik heb wat punten verbeterd bij de opmerkingen.

code:

Code:
string woord;
            int lengte;
            string resultaat, resultaat2, resultaat3, resultaat4, resultaat5, resultaat6, resultaat7, resultaat8, resultaat9;
            bool foutwoord=false;
            woord=Convert.ToString(textBox1.Text);

            

            if (woord==woord.ToLower())
            {
                lengte=woord.Length;
                for (int i = 0; i < lengte; i++)
                {

                    switch (resultaat)
                    {

                        case "a": resultaat = resultaat2; break;
                        case "b": resultaat = resultaat2; break;
                        case "c": resultaat = resultaat2; break;
                        case "d": resultaat = resultaat3; break;
                        case "e": resultaat = resultaat3; break;
                        case "f": resultaat = resultaat3; break;
                        case "g": resultaat = resultaat4; break;
                        case "h": resultaat = resultaat4; break;
                        case "i": resultaat = resultaat4; break;
                        case "j": resultaat = resultaat5; break;
                        case "k": resultaat = resultaat5; break;
                        case "l": resultaat = resultaat5; break;
                        case "m": resultaat = resultaat6; break;
                        case "n": resultaat = resultaat6; break;
                        case "o": resultaat = resultaat6; break;
                        case "p": resultaat = resultaat7; break;
                        case "q": resultaat = resultaat7; break;
                        case "r": resultaat = resultaat7; break;
                        case "s": resultaat = resultaat7; break;
                        case "t": resultaat = resultaat8; break;
                        case "u": resultaat = resultaat8; break;
                        case "v": resultaat = resultaat8; break;
                        case "w": resultaat = resultaat9; break;
                        case "x": resultaat = resultaat9; break;
                        case "y": resultaat = resultaat9; break;
                        case "z": resultaat = resultaat9; break;



                    }
                    label1.Text = resultaat.ToString();
code:
 
Laatst bewerkt door een moderator:
Je kent nog steeds geen waarde toe aan resultaat waar je op test met de switch. Je hebt nu wel resultaat2.. etc gedeclareerd, maar die hebben allemaal nog geen waarde.
 
Je zult even moeten wachten op iemand met C# kennis, maar het zou volgens mij zoiets moeten kunnen zijn:

Code:
woord==woord.ToLower()
lengte=woord.Length;
for (int i = 0; i < lengte; i++)
{
    switch (woord[i])   <- dit is vast fout, in vb zou heb mid(i,1) zijn 
    {
     case "a", "b', "c": resultaat = "2"; break;
     case "d", "e","f" : resultaat = "3"; break;
  etc
  }
}

Je kunt resultaat natuurlijk ook gewoon als integer declareren en dan resultaat = 2 gebruiken
 
o jammer het lukt niet:rolleyes:,

Ik zal wel even wachten op killermenance.
 
Ik denk dat ik morgen maar verder ga , met oefenen.
Ben hele dag bezig geweest met het converteren van letters naar getallen.

Ik hou jullie op de hoogte en alvast bedankt.

groet,

Alieas
 
Als het fout gaat, dan zou ik graag de foutmeldingen er bij willen hebben welke je krijgt :)
 
hey

Ik heb voor de zekerheid de bijlage van mijn opdracht toegepast zodat je een beeld hebt, wat ik precies wil bereiken. Het is een lastige opdracht,maar heb erg mijn best gedaan gisteren. Enige wat mij is gelukt zijn de volgende codes. Verder weet ik niet hoe ik verder moet. Misschien heb ik iets verkeerd gedaan waar jij mij kan helpen.


Code:

string woord;
int lengte;
string resultaat, resultaat2, resultaat3, resultaat4, resultaat5, resultaat6, resultaat7, resultaat8, resultaat9;
bool foutwoord=false;
woord=Convert.ToString(textBox1.Text);



if (woord==woord.ToLower())
{
lengte=woord.Length;
for (int i = 0; i < lengte; i++)
{

switch (resultaat)
{

case "a": resultaat = resultaat2; break;
case "b": resultaat = resultaat2; break;
case "c": resultaat = resultaat2; break;
case "d": resultaat = resultaat3; break;
case "e": resultaat = resultaat3; break;
case "f": resultaat = resultaat3; break;
case "g": resultaat = resultaat4; break;
case "h": resultaat = resultaat4; break;
case "i": resultaat = resultaat4; break;
case "j": resultaat = resultaat5; break;
case "k": resultaat = resultaat5; break;
case "l": resultaat = resultaat5; break;
case "m": resultaat = resultaat6; break;
case "n": resultaat = resultaat6; break;
case "o": resultaat = resultaat6; break;
case "p": resultaat = resultaat7; break;
case "q": resultaat = resultaat7; break;
case "r": resultaat = resultaat7; break;
case "s": resultaat = resultaat7; break;

code:
 

Bijlagen

probeer het hier eens mee:

Code:
string woord = Convert.ToString(textBox1.Text);
int lengte = woord.Length;
string resultaat = "";
bool foutwoord = false;

if (woord == woord.ToLower())
{
	for (int i = 0; i < lengte; i++)
	{
		switch (woord[i])
		{
			case 'a': resultaat = resultaat + "2"; break;
			case 'b': resultaat = resultaat + "2"; break;
			case 'c': resultaat = resultaat + "2"; break;
			case 'd': resultaat = resultaat + "3"; break;
			case 'e': resultaat = resultaat + "3"; break;
			case 'f': resultaat = resultaat + "3"; break;
			case 'g': resultaat = resultaat + "4"; break;
			case 'h': resultaat = resultaat + "4"; break;
			case 'i': resultaat = resultaat + "4"; break;
			case 'j': resultaat = resultaat + "5"; break;
			case 'k': resultaat = resultaat + "5"; break;
			case 'l': resultaat = resultaat + "5"; break;
			case 'm': resultaat = resultaat + "6"; break;
			case 'n': resultaat = resultaat + "6"; break;
			case 'o': resultaat = resultaat + "6"; break;
			case 'p': resultaat = resultaat + "7"; break;
			case 'q': resultaat = resultaat + "7"; break;
			case 'r': resultaat = resultaat + "7"; break;
			case 's': resultaat = resultaat + "7"; break;
			case 't': resultaat = resultaat + "8"; break;
			case 'u': resultaat = resultaat + "8"; break;
			case 'v': resultaat = resultaat + "8"; break;
			case 'w': resultaat = resultaat + "9"; break;
			case 'x': resultaat = resultaat + "9"; break;
			case 'y': resultaat = resultaat + "9"; break;
			case 'z': resultaat = resultaat + "9"; break;
		}
	}
}
 
o erg bedankt het lukt:thumb:.
Ik ga verder met het programmeren van het controleren of er geen hoofdletters in zetten.
 
doe ik dit wel zo goed, dat er gecontroleerd kan worden of er hoofdletters in zitten.

code:

string woord = Convert.ToString(textBox1.Text);
int lengte = woord.Length;
string resultaat = "";
bool foutwoord = false;

if (woord == woord.ToLower())
{
for (int i = 0; i < lengte; i++)
{
switch (woord)
{
case 'a': resultaat = resultaat + "2"; break;
case 'b': resultaat = resultaat + "2"; break;
case 'c': resultaat = resultaat + "2"; break;
case 'd': resultaat = resultaat + "3"; break;
case 'e': resultaat = resultaat + "3"; break;
case 'f': resultaat = resultaat + "3"; break;
case 'g': resultaat = resultaat + "4"; break;
case 'h': resultaat = resultaat + "4"; break;
case 'i': resultaat = resultaat + "4"; break;
case 'j': resultaat = resultaat + "5"; break;
case 'k': resultaat = resultaat + "5"; break;
case 'l': resultaat = resultaat + "5"; break;
case 'm': resultaat = resultaat + "6"; break;
case 'n': resultaat = resultaat + "6"; break;
case 'o': resultaat = resultaat + "6"; break;
case 'p': resultaat = resultaat + "7"; break;
case 'q': resultaat = resultaat + "7"; break;
case 'r': resultaat = resultaat + "7"; break;
case 's': resultaat = resultaat + "7"; break;
case 't': resultaat = resultaat + "8"; break;
case 'u': resultaat = resultaat + "8"; break;
case 'v': resultaat = resultaat + "8"; break;
case 'w': resultaat = resultaat + "9"; break;
case 'x': resultaat = resultaat + "9"; break;
case 'y': resultaat = resultaat + "9"; break;
case 'z': resultaat = resultaat + "9"; break;
default: foutwoord = true; break;
label1.Text = " hier zitten hoofdletters in";
}
label1.Text = resultaat.ToString();

code:
 
Nee, zo maak je het zo dat als er geen hoofdletters in zitten dat hij het label weergeeft dat er wel hoofdletters in zitten.

Je zal met een else{} conditie moeten werken welke een else geeft op de if welke nakijkt of het woord wel lowercase is.
 
Doe ik het goed zo?

code:

string woord = Convert.ToString(textBox1.Text);
int lengte = woord.Length;
string resultaat = "";
bool foutwoord = false;

if (woord == woord.ToLower())
{
for (int i = 0; i < lengte; i++)
{
switch (woord)
{
case 'a': resultaat = resultaat + "2"; break;
case 'b': resultaat = resultaat + "2"; break;
case 'c': resultaat = resultaat + "2"; break;
case 'd': resultaat = resultaat + "3"; break;
case 'e': resultaat = resultaat + "3"; break;
case 'f': resultaat = resultaat + "3"; break;
case 'g': resultaat = resultaat + "4"; break;
case 'h': resultaat = resultaat + "4"; break;
case 'i': resultaat = resultaat + "4"; break;
case 'j': resultaat = resultaat + "5"; break;
case 'k': resultaat = resultaat + "5"; break;
case 'l': resultaat = resultaat + "5"; break;
case 'm': resultaat = resultaat + "6"; break;
case 'n': resultaat = resultaat + "6"; break;
case 'o': resultaat = resultaat + "6"; break;
case 'p': resultaat = resultaat + "7"; break;
case 'q': resultaat = resultaat + "7"; break;
case 'r': resultaat = resultaat + "7"; break;
case 's': resultaat = resultaat + "7"; break;
case 't': resultaat = resultaat + "8"; break;
case 'u': resultaat = resultaat + "8"; break;
case 'v': resultaat = resultaat + "8"; break;
case 'w': resultaat = resultaat + "9"; break;
case 'x': resultaat = resultaat + "9"; break;
case 'y': resultaat = resultaat + "9"; break;
case 'z': resultaat = resultaat + "9"; break;
}
else if (foutwoord)
{
label1.Text="hier zitten hoofdletters in";
}

}

label1.Text = resultaat.ToString();

code:
 
vervelend is dit, het lukt mij gewoon niet::(

Code:
     string woord = Convert.ToString(textBox1.Text);
int lengte = woord.Length;
string resultaat = "";
bool foutwoord = false;

if (woord == woord.ToLower())
{
    for (int i = 0; i < lengte; i++)
    {
        switch (woord[i])
        {
            case 'a': resultaat = resultaat + "2"; break;
            case 'b': resultaat = resultaat + "2"; break;
            case 'c': resultaat = resultaat + "2"; break;
            case 'd': resultaat = resultaat + "3"; break;
            case 'e': resultaat = resultaat + "3"; break;
            case 'f': resultaat = resultaat + "3"; break;
            case 'g': resultaat = resultaat + "4"; break;
            case 'h': resultaat = resultaat + "4"; break;
            case 'i': resultaat = resultaat + "4"; break;
            case 'j': resultaat = resultaat + "5"; break;
            case 'k': resultaat = resultaat + "5"; break;
            case 'l': resultaat = resultaat + "5"; break;
            case 'm': resultaat = resultaat + "6"; break;
            case 'n': resultaat = resultaat + "6"; break;
            case 'o': resultaat = resultaat + "6"; break;
            case 'p': resultaat = resultaat + "7"; break;
            case 'q': resultaat = resultaat + "7"; break;
            case 'r': resultaat = resultaat + "7"; break;
            case 's': resultaat = resultaat + "7"; break;
            case 't': resultaat = resultaat + "8"; break;
            case 'u': resultaat = resultaat + "8"; break;
            case 'v': resultaat = resultaat + "8"; break;
            case 'w': resultaat = resultaat + "9"; break;
            case 'x': resultaat = resultaat + "9"; break;
            case 'y': resultaat = resultaat + "9"; break;
            case 'z': resultaat = resultaat + "9"; break;
            default: foutwoord = true; break;
               

        }
        if (foutwoord)
        {
            label1.Text = "hier zitten hoofdletters in";
        }
        else
        {
            label1.Text = resultaat;
        }


        label1.Text = resultaat.ToString();
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan