2016-06-29 6 views
0

Ich habe ein Problem mit meinem Code. Ich muss den letzten Standardfall in alphabetischer Reihenfolge drucken, aber ich bin mir nicht sicher, warum es nicht funktioniert. Ich muss mein stringArray nehmen, zwei weitere Zeichenfolgen daran anhängen und den richtigen Fall in meinem Code ausdrucken. Anscheinend von dem, was mir gesagt wurde, druckte ich gegen die ursprüngliche, unsortierte Liste. Aber ich bin mir nicht sicher, was ich hier falsch gemacht habe.Array von Zeichenfolgenfunktionsfehler, kann die Bestellung nicht korrekt drucken

ist hier mein Code

var stringArray = ["zebra", "JAGUAR", "apple"] 

func exFunction(par1: [String]) { 

var parVar = par1 
var secArray = [String]() 

switch par1.count{ 

    //Reverses strings in the array 
case 1...3: 
    for j in par1 { 
     let reverse = j.characters.reverse() 
     secArray.append(String(reverse)) 
    } 
    print(secArray) 

    //Reverse the element order 
case 4...6: 
    for _ in 1...par1.count{ 

     secArray.append(parVar.popLast()!) 
    } 
    print(secArray) 

    //Prints strings in alphabetical order 
default: 
    for i in par1 { 
     secArray.append(i.lowercaseString) 
    } 
    secArray = secArray.sort() 
    for p in par1 { 
     print(p) 
    } 
} 
} 

exFunction(stringArray) 

stringArray.append("Blue") 
stringArray.append("eMerald") 
exFunction(stringArray) 

stringArray.append("beads") 
stringArray.append("BEAR") 
exFunction(stringArray) 

sollte die Ausgabe sein:

[ "Arbez", "RAUGAJ", "elppa"]

[ "Emerald", "Blau", "Apfel", "JAGUAR", "zebra"]

Apfel, Perlen, BÄR, Blau, smaragd, JAGUAR, zebra

+0

Könnten Sie die erwarteten hinzufügen Ausgabe, bitte? – Alexander

Antwort

0

Sie haben einen Tippfehler:

default: 
    for i in par1 { 
     containerArray.append(i.lowercaseString) 
    } 
    containerArray = containerArray.sort() 
    for p in containerArray { // instead of par1 
     print(p) 
    } 
} 
+0

Omg ich wusste, dass es etwas Dummes war. Danke lol. – art3mis

+0

Das sieht ... vertraut – Alexander

+0

Ok .... aus Respekt für dich habe ich es weg geschnitten. Ich habe deine Antwort nicht gesehen, bevor ich sie bearbeitet habe –

0

Sie haben einen Fehler, der sich um eins dreht. Array-Indizes beginnen bei 0, so dass der Bereich gültiger Indizes in einem 6-Elemente-Array 0 bis 5 ist, so dass Ihr case 4...6 wahrscheinlich vom Ende des Arrays abgeht.

+0

Ich glaube nicht. Die Indizes beginnen bei 0, aber ein Array mit 6 Elementen hat die Länge 6, und "a ... b" bedeutet a (inklusive) bis b (exklusiv) –

0

Das Problem ist, dass Sie Looping und Drucken der Elemente von par1, Ihre nicht containerArray sortiert.

Was halten Sie davon?

//Original Strings 
var stringArray = ["zebra", "JAGUAR", "apple"] 

func thirdFunction(par1: [String]) { //par1 should have a better name 
    var result: [String] 

    switch par1.count { 
    case 1...3: //Reverses strings in the array 
     result = par1.map{ String($0.characters.reverse) } 

    case 4...6: //Reverse the element order 
     result = par1.reverse 

    default: //Prints strings in alphabetical order 
     result = par1.map{ $0.lowercaseString }.sorted() 
    } 

    print(result) 
} 

print("//Switch 1-3 Strings") 
thirdFunction(stringArray) 

print("//Switch 4-6 Strings") 
stringArray.append("Blue") 
stringArray.append("eMerald") 
thirdFunction(stringArray) 

print("//Switch >6 Strings") 
stringArray.append("beads") 
stringArray.append("BEAR") 
thirdFunction(stringArray) 

Output:

// Schalter 1-3 Strings

[ "Arbez", "RAUGAJ", "elppa"]

// Schalter 4-6 Strings

[ "Emerald", "Blau", "Apfel", "JAGUAR", "zebra"]

// Schalter> 6 Strings

[ "Apfel", "Perlen", "Bär", "blau", "Smaragd", "Jaguar", "zebra"]