###前提・実現したいこと
swiftでswitchを使った判定機能の実装。
C言語のコードが正しいので、Swiftだとどのように記述するのか教えていただきたいです、。
###発生している問題・エラーメッセージ
どのような条件を入れても、case aの計算式で実装されてしまう。
###該当のソースコード
swift
1var x : Int 2 var y : Int 3 var z : Int 4 5 x=Int(Double(yuzaTextField.text!)!) 6 z=Int(Double(kikanTextField.text!)!) 7 8 let a = koutikuTextField.text == "再構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && z < 13 && z < 23 && nanidoTextField.text == "易しい" && x >= 100 && x <= 200 9 10 let b = koutikuTextField.text == "新規構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && z < 13 && z < 23 && nanidoTextField.text == "易しい" && x >= 100 && x <= 200 11 12 let c = koutikuTextField.text == "再構築" && kiboTextField.text == "大手ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && z <= 13 && z <= 23 && nanidoTextField.text == "易しい" && x >= 100 && x <= 200 13 14 let d = koutikuTextField.text == "新規構築" && kiboTextField.text == "大手ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && z < 13 && z < 23 && nanidoTextField.text == "易しい" && x >= 100 && x <= 200 15 16 let e = koutikuTextField.text == "再構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&cloud" && jisyakiboTextField.text == "中企業" && z < 13 && z < 23 && nanidoTextField.text == "易しい" && x >= 100 && x <= 200 17 18 let f = koutikuTextField.text == "新規構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&cloud" && jisyakiboTextField.text == "中企業" && 12 < z && z < 24 && nanidoTextField.text == "易しい" && 99 < x && x < 201 19 20 21 22 switch (a || b || c || d || e || f){ 23 24 case a: 25 y = 500000 * x 26 resultViewController.y = Double(y) 27 28 case b: 29 y = (500000+100000) * x 30 resultViewController.y = Double(y) 31 32 case c: 33 y = (500000+320000) * x 34 resultViewController.y = Double(y) 35 36 case d: 37 y = (500000+100000+320000) * x 38 resultViewController.y = Double(y) 39 40 case e: 41 y=(500000-250000) * x 42 resultViewController.y = Double(y) 43 44 case f: 45 y=(500000+100000-250000) * x 46 resultViewController.y = Double(y) 47 48 default: 49 resultViewController.y = 8 50 51 } 52 }
下記はc言語で記載してコンパイルできたものです。(一部swiftの形式の可能性あり)今回はこれをswiftにしたいです。
var x : Int var y : Int var z : Int if Double(yuzaTextField.text!) != nil{ x=Int(Double(yuzaTextField.text!)!) } if Double(kikanTextField.text!) != nil{ z=Int(Double(kikanTextField.text!)!) } y = 500000x switch( (koutikuTextField.text | kiboTextField.text | kosutoTextField.text | jisyakiboTextField.text | z | nanidoTextField.text | x){ case (koutikuTextField.text == "再構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=500000x break; case (koutikuTextField.text == "新規構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=(500000+100000)x break; case (koutikuTextField.text == "再構築" && kiboTextField.text == "大手ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=(500000+320000)x break; case (koutikuTextField.text == "新規構築" && kiboTextField.text == "大手ベンダー" && kosutoTextField.text == "ソフトウェア&ハード" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=(500000+100000+320000)x break; case (koutikuTextField.text == "再構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&cloud" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=(500000-250000)x break; case (koutikuTextField.text == "新規構築" && kiboTextField.text == "中堅ベンダー" && kosutoTextField.text == "ソフトウェア&cloud" && jisyakiboTextField.text == "中企業" && (z < 13 && z < 23) && nanidoTextField.text == "易しい" && (x >= 100 && x <= 200): y=(500000+100000-250000)x break; }
回答2件
あなたの回答
tips
プレビュー