Entwickler-Ecke

Basistechnologien - FOR-Schleife mit einem Buchstaben beenden!


DerChamp - So 01.03.09 17:01
Titel: FOR-Schleife mit einem Buchstaben beenden!
Hallo liebe Programmierer-Community!
Ich lerne jetzt seit ungefähr 3 Monaten C# und wollte jetzt mal ein kleines Programm (eig. nur so zum Spaß, obwohl es mich schon sehr interessiert ob es funktioniert) schreiben, eine Art Verschlüsselungsprogramm aber nur für Texte... Idee steht und ich hab alles umgesetzt! Jedoch habe ich ein kleines Problemchen übergangen was ich jetzt aber noch bereinigen will!
Das Programm soll jeden Buchstaben in eine Zahl umwandeln (in dem Fall ASCII-Code mit allmöglichen Zahlen Multiplizieren und Dividieren, und dann den verschlüsselten Code ausgeben! In die andere Richtung ist halt nur alles umgekehrt!) Jeder eingegebene Buchstabe wird als String gespeichert in einem Index (ich will nicht hören, dass das platzverschwenderisch ist ;) ) und sobald man den Buchstaben # (auch gerne wenn man Enter drückt) sollen die Arrays übergeben werden an meinen Verschlüsseler!
So sieht meine for-Schleife aus:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
                
int i;
for (i = 0;i < 255; i++)
{
str[i] = Convert.ToString(Console.Read());
if (str[i] == "#")
break;
}


Wo liegt das Problem? Entweder ich übersehe da was oder ähnliches! sobald ich nämlich "#" drücke, macht er einfach weiter! Ich habe auch schon anstatt "break;" "i = 255" probiert aber das hilft natürlich auch nicht!
Ich hoffe ihr könnt mir helfen!
MFG DerChamp


Kha - So 01.03.09 18:04

:welcome: in der Entwickler-Ecke!
user profile iconDerChamp hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm soll jeden Buchstaben in eine Zahl umwandeln
Warum speicherst du die Zahlen dann in einem String-Array, das macht doch keinen Sinn? Benutze ein byte-Array (oder List<byte>, dann hast du keine feste Größenbeschränkung), dann wäre dir auch der Fehler nicht unterlaufen: In deinem Array steht schließlich nicht "#", sondern "35", der String des Unicode-Codes. Mit einem byte-Array (das dann wahrscheinlich nicht mehr "str" heißen sollte) sieht die Abfrage dann so aus:

C#-Quelltext
1:
if (str[i] == (byte)'#') ...                    


PS: Eine andere Vorgehensweise: Lies mit Console.ReadLine eine ganze Zeile aus und übertrage sie dann in einer Schleife in ein gleichgroßes byte-Array.


DerChamp - So 01.03.09 19:53

aber in der Variable str liegen die Buchstaben ja noch als BUchstabe vor! Die Konvertierung findet erst im 2. Teil, der nicht dabei steht statt!


Kha - So 01.03.09 23:06

user profile iconDerChamp hat folgendes geschrieben Zum zitierten Posting springen:
aber in der Variable str liegen die Buchstaben ja noch als BUchstabe vor!
Nö: Console.Read liefert einen int! zurück, also bereits den Code des Zeichens. Du bekommst also 35 als int und speicherst "35" als String.


DerChamp - Mi 04.03.09 17:16

Da haste Recht! Ich probier mal schnell ob's geht und berichte ;)