2016-06-29 3 views
0

私のコードに問題があります。最後のデフォルトのケースをアルファベット順に印刷する必要がありますが、なぜそれが機能していないのか分かりません。私は、私のstringArrayを取る必要が2つの文字列を追加し、私のコードで正しい場合を印刷します。どうやら私が元のソートされていないリストに対して印刷していると言われていたからです。しかし、私はここで何が悪いのか分からない。文字列の配列の関数エラー、注文を正しく印刷できません。

は、ここで出力があるべき自分のコード

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) 

です:

[ "arbez"、 "RAUGAJ"、 "elppa"]

[ "EMERALD"、 "ブルー"、 "りんご"、 "JAGUAR"、 "シマウマ"]

リンゴ、 ビーズ、 BEAR、 ブルー、エメラルド 、 ジャガー、 シマウマ

+0

あなたが期待を追加することができます出力してください。 – Alexander

答えて

0

あなたはタイプミスだ:

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

Omg私はそれが何かばかだと知っていました。ありがとう。 – art3mis

+0

これは見た目...おなじみ – Alexander

+0

あなたのために敬意を表して、私はそれを編集しました。私はそれを編集する前にあなたの答えを見ませんでした –

0

あなたはオフラインでエラーがあります。配列インデックスは0から始まります。したがって、6要素配列の有効なインデックスの範囲は0から5になりますので、case 4...6はおそらく配列の最後から外れています。

+0

私はそうは思わない。添字は0から始まりますが、6要素の配列は長さが6で、 'a ... b 'はaからbまでを意味します。 –

0

を問題は、あなたのcontainerArrayをソートされていない、par1の要素をループして印刷することです。

あなたはこれについてどう思いますか?

//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) 

出力:

//スイッチ1-3弦

は// 4-6文字列を切り替え

[ "arbez"、 "RAUGAJ"、 "elppa"]

[ "EMERALD"、 "ブルー"、 "りんご"、 "JAGUAR"、 "シマウマ"]

//>は6弦

切り替え[ "りんご"、 "ビーズ"、 "クマ"、 "青"、 "エメラルド"、 "ジャガー"、 "シマウマ"]

関連する問題