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!
DerChamp hat folgendes geschrieben : |
| 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
DerChamp hat folgendes geschrieben : |
| 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 ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!