none
Array in Console.Writeline ausgeben RRS feed

  • Frage

  • Hallo zusammen,

    Ich wollte mir eine kleine Konsolenapplikation bauen.
    Sie sollte mit einem Stringarray arbeiten. Wie man ein stringarray definiert, weis ich bereits.
    Ich weis jedoch nicht, wie man die einzelnen arrayteile im console.writeline ausgibt.
    Mir ist lediglich die Console.Writeline(0) Methode (oder je nach gewünschtem arrayabteil (1), (2) etc.) bekannt.

    Ich möchte aber dafor noch andere Worte ausgeben. Also in etwa so:

    Module Module1
    
        Sub Main()
            Dim Bla() As String = {"Hallo", "Beta", "Gamma", "Delta"}
            Console.Writeline("Blablabla (Arrayteil1) Blabla (Arrayteil2)")
            Console.readline()
    
        End Sub
    
    
    End Module


    Wie kann ich das machen?
    Bitte am besten gleich in Codeform zeigen!

    MfG
    Snize
    Montag, 7. Dezember 2009 11:52

Antworten

  • Wenn es variabel sein soll, dann musst du einen prozeduralen Lösungsweg begehen, z.B. so:

    Module Module1
    
      Public Sub main()
        Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"} 'Array wird erstellt
        Dim sb As New Text.StringBuilder
        For i = 0 To Namen.GetUpperBound(0)
          sb.Append(Namen(i))
          If i = Namen.GetUpperBound(0) - 1 Then
            sb.Append(" oder ")
          ElseIf i < Namen.GetUpperBound(0) Then
            sb.Append(", ")
          End If
        Next
    
        Console.WriteLine("Hallo. Ist ihr Name {0}?", sb.ToString)
        Console.ReadLine()
      End Sub
    
    End Module
    -- 
    Peter 
    Dienstag, 8. Dezember 2009 10:52

Alle Antworten

  • Hallo Snize,

    Möchtest Du sie so anzeigen ?

    Bla[0]=Hallo

    Bla[1]=Beta

    Bla[2]=Gamma

    Bla[3]=Delta

     

    Dim Bla() As String = {"Hallo", "Beta", "Gamma", "Delta"}
     For i = 0 To Bla.Length - 1
      Console.WriteLine("Bla[{0}]={1}", i, Bla(i))
     Next i

     



    Grüße,

    Robert

    Montag, 7. Dezember 2009 15:40
    Moderator

  • Hallo Robert,

    Zuerst danke für deine Antwort.
    Leider aber meinte ich nicht das, wobei deine Antwort wiederum meine nächste Frage beantwortet hat :P
    Ich möchte verschiedene Arrayteile in einen Satz bringen. Ich versuche, das Array mit ein bisschen klareren Wörtern zu definieren, um das ganze verständlicher zu machen.. Also:

    Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"} 'Array wird erstellt
    Console.Writeline("Hallo. Ist ihr Name (0), (1), (2), oder (3)?") 'Hier werden die Arrayteile in einem Satz ausgegeben. Also dann sollte folgender Satz rauskommen: "Hallo.Ist ihr Name Joel, Bernd, Luca oder Elias?"
    Console.Readline()
    Ich hoffe, Sie verstehen nun richtig :)

    MfG
    Snize


    Montag, 7. Dezember 2009 19:54
  • Hallo Snize,

    Man könnte erstens den String erstellen indem man die Wörter zusammenknüpft und ihn dann anzeigen aber das ist nicht elegant damit gibt es auch die Zeile mit der Lösung :)

    Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"} 'Array wird erstellt
    Dim myoutput As String
    
    myoutput = "Hallo. Ist ihr Name " + Namen(0) + ", " + Namen(1) + ", " + Namen(2) + " oder " + Namen(3) + "?"
    Console.WriteLine(myoutput)
    Console.WriteLine("Hallo. Ist ihr Name {0}, {1}, {2} oder {3}?", Namen) '//das ist die Loesung
    
    '//Console.WriteLine("Hallo. Ist ihr Name (0), (1), (2), oder (3)?") 'Hier werden die Arrayteile in einem Satz ausgegeben. Also dann sollte folgender Satz rauskommen: "Hallo.Ist ihr Name Joel, Bernd, Luca oder Elias?"
    Console.ReadLine()
    


     

     

    Grüße,

    Robert

    Dienstag, 8. Dezember 2009 07:59
    Moderator
  • Hallo Snize,

    in Ergänzung zu Roberts Antwort, schau Dir mal an:
    Formatierung von Typen
    wobei für Dich eingangs interessant wäre Kombinierte Formatierung
    denn Console.WriteLine versteht die gleichen Angaben wie String.Format.

    In Verbindung mit dem Array-Index könntest Du Dir z. B. eine Auswahl
    zusammenbauen, so dass als Eingabe nur die Zahl anzugeben wäre, so z. B.
    Heissen Sie:
    1. Joel
    2. Bernd
    3. Luca
    4. Elias
    Bitte geben sie eine Zahl von 1 - 4 ein.


    Die Implementierung überlasse ich zur Übung erst mal Dir.

    Gruß Elmar
    Dienstag, 8. Dezember 2009 10:32
    Beantworter
  • Wenn es variabel sein soll, dann musst du einen prozeduralen Lösungsweg begehen, z.B. so:

    Module Module1
    
      Public Sub main()
        Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"} 'Array wird erstellt
        Dim sb As New Text.StringBuilder
        For i = 0 To Namen.GetUpperBound(0)
          sb.Append(Namen(i))
          If i = Namen.GetUpperBound(0) - 1 Then
            sb.Append(" oder ")
          ElseIf i < Namen.GetUpperBound(0) Then
            sb.Append(", ")
          End If
        Next
    
        Console.WriteLine("Hallo. Ist ihr Name {0}?", sb.ToString)
        Console.ReadLine()
      End Sub
    
    End Module
    -- 
    Peter 
    Dienstag, 8. Dezember 2009 10:52
  • Hallo Snize,

    Man könnte erstens den String erstellen indem man die Wörter zusammenknüpft und ihn dann anzeigen aber das ist nicht elegant damit gibt es auch die Zeile mit der Lösung :)

    Grüße,
    

    Robert

    Hallo Robert,

    Vielen Dank für Ihre Antwort! Genau nach dem habe ich gesucht :)
    Wird mit dem ", Namen" hinten am Satzglied bestimmt, aus welchem Array er die Teile holen sollte?
    Bzw. könnte ich theoretisch auch:


    Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"} 'Array1
    Dim Zahlen() As Integer = {1, 2, 3, 4}
    Console.Writeline("Namen = {1}, {2}, {3}, {4}", Namen)
    Console.Writeline("Zahlen = {1}, {2}, {3}, {4}", Zahlen)
    
    machen?

    Gruss
    Snize

    Dienstag, 8. Dezember 2009 11:10

  • In Verbindung mit dem Array-Index könntest Du Dir z. B. eine Auswahl
    zusammenbauen, so dass als Eingabe nur die Zahl anzugeben wäre, so z. B.
    Heissen Sie:
    1. Joel
    2. Bernd
    3. Luca
    4. Elias
    Bitte geben sie eine Zahl von 1 - 4 ein.


    Hallo Elmar,

    Ich danke dir für deine Antwort.
    Auch das ist eine Möglichkeit, meiner Meinung nach die elegantere.
    Und nach einigen Versuchen habe ich es sogar selber geschafft es so darzustellen :P
    Vielen Danke!

    Gruss
    Snize
    Dienstag, 8. Dezember 2009 11:14
  • Hallo Snize,


    Für Zahlen muss man zu String konvertieren:


    Nehme Peter Fleischers Lösung. Sie ist besser da man nicht die Konvertierung machen muss weil StringBuilder sich um das kümmert.

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Namen() As String = {"Joel", "Bernd", "Luca", "Elias"}
            Dim Zahlen() As Integer = {1, 2, 3, 4}
    
            Dim stringArray() As String = (Array.ConvertAll(Zahlen, New Converter(Of Integer, String)(AddressOf ConvertIntToString)))
    
    
            Console.WriteLine("Namen = {0}, {1}, {2}, {3}", Namen)
            Console.WriteLine("Zahlen = {0}, {1}, {2}, {3}", stringArray)
    
        End Sub
        Public Shared Function ConvertIntToString(ByVal number As Integer) As String
            Return number.ToString
        End Function
    

     


    Grüße,

    Robert
    Dienstag, 8. Dezember 2009 11:49
    Moderator