Michas Anfängerfragen...



  • Micha369 schrieb:

    und das steht in meinem Listing:
    Feld[z, s] = int.Parse(myString[i]); // will er nicht!

    Funktioniert bei mir wunderbar.
    Wer weiß was Du falsch machst, aus der Fehlermeldung - "will er nicht" - werde ich auch nicht schlau.



  • @Micha:

    Du hast gesagt, dass in der Textdatei was in der richtung steht:

    123,75,9

    Oder?

    Es reicht nicht, wenn du das dann einfach in nen Array reinliest, sondern du musst es auch noch Splitten...

    Vielleicht haste es ja gemacht, aber wie Noodless schon sagte... Eine Fehlermeldung würde uns schon helfen.



  • Hallo Leute,

    Also

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Array_test
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Read the file as one string.
                System.IO.StreamReader myFile =
                    new System.IO.StreamReader(@"d:\temp\test.txt");
                string myString = myFile.ReadToEnd();
    
                myFile.Close();
    
                // Display the file contents.
                System.Console.WriteLine(myString);
                // Suspend the screen.
                //System.Console.ReadLine();
    
                int[,] Feld = new int[9, 9];
                int i = 0;
                for (int z = 0; z < 9; z++)
                {
                    for (int s = 0; s < 9; s++)
                    {
                        Console.Write(myString[i]);
    
    xx1                 Feld[z, s] = int.Parse(myString[i]); // mit dieser Zeile geht es nicht!
    xx2                 // Feld[z, s] = myString[i]-48;      mit dieser zeile geht es super!
                        i +=2;
                    }
                    i++;    //Am Ende einer Zahlenzeile kommt noch ein Zeilenumbruch, den überlesen!
                }
            }
         }
    }
    

    Diese Code läuft korrekt mit Zeile xx2. Wenn aber anstelle Zeile xx2 die Zeile xx1 notiert wird, dann fäuft der Code nicht. Es kommen 2 Fehler:

    Fehler 1 Die beste Übereinstimmung für die überladene int.Parse(string)-Methode hat einige ungültige Argumente. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 31 34 Array_test
    Fehler 2 1-Argument: kann nicht von "char" in "string" konvertiert werden. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 31 44 Array_test

    Meine Textdatei "Test.txt" sieht so aus:

    2,5,6,3,7,5,3,2,
    1,2,3,4,3,5,2,7,
    ......
    5,4,3,0,8,6,7,5,

    Seht mal, wenn ich schreibe:

    .
    .
    .
                string myString = myFile.ReadToEnd();
    .
    .
    .
                string a = "";
                a = myString[i];
    

    dann sagt es:

    Fehler 1 Eine implizite Konvertierung vom Typ "char" in "string" ist nicht möglich. D:\Dokumente\Visual_C#\Projects\Array_test\Array_test\Program.cs 34 25 Array_test

    Sehr komisch!
    myString ist eindeutig ein String und a ebenfalls!
    Der hat irgendwie ein Problem mit mir! Ich habe in meinem Code keine chars!

    Ich will dem String a nur einen ganz kleinen String zuordnen. Er ist nur ein Zeichen lang, z.B. a = myString[6]!

    a = "" geht ja! hier ist der String sogar nur 0 Zeichen lang! Also dachte ich mir, sollte man a doch auch Strings der Länge 1 zuweisen können, oder?



  • Schau dir die Doku an! Mit dem Indexer greifst du bei Strings auf einzelne Zeichen(sprich char) zu, nicht auf einzelnen Strings! Genau das sagt doch auch die Fehlermeldung - wie deutlich soll sonst noch ne Fehlermeldung sein?


Anmelden zum Antworten