###文字列に3桁の数字を入力させ、検査
まだ、C言語の入門程度のレベルですが、今回初めてswiftに挑戦しています。
初めてでわからないことばかりですが、ググったりしてなんとかここまでたどり着きました。
今回つくっったのは、
文字列に標準入力させた3桁の数字を代入させるソースコードですが、エラーがでてきてしまいつんでます。
ググってもなかなか出てこないので困っています。
###発生している問題・エラーメッセージ
if s[i]==s[j] 文字列に重複がないかのチェックでエラーが出てしまいました。 //エラー 'subscript' is unavailable: cannot subscript String with an Int,see the documentation comment for discussion
###該当のソースコード
import Foundation //文字列sを検査 func check(s:String) -> Int { var i:Int = 0 var j:Int = 0 //文字列sが三文字か検査 if(s.characters.count != 3){ return 1 } //文字列sに数字以外が入力されていないか検査 let kensa = NSPredicate(format: s) if kensa==0{ return 2 } //文字列sに重複した数が入力されていないか検査 for i in 0..<3 { for j in 0..<i { if s[i]==s[j] { return 3 } } } return 0 } //数を入力 func make3you(inout s:String) { var chk = 0 repeat{ print("数を入力") if let input: NSFileHandle = NSFileHandle.fileHandleWithStandardInput(){ let str = NSString(data: input.availableData, encoding: NSUTF8StringEncoding) let s = str!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) chk=check(s) //check関数へ } switch(chk){ case 1:print("きちんと3文字で入力してください"); break case 2:print("数字以外の文字を入力しないでください");break case 3:print("同じ数を複数入力しないでください");break } }while chk != 0 } var mine : String = "000" make3you(&mine) print(mine) exit(0)
###試したこと
どちらもINT型に変更したら式が実行できるのかと考え
Int(s[i]) == Int(s[j])
に変更しましたが、Characterの型ではIntのイニシャライザーを実行できませんと出てしまい、これもググってもなかなかわからくて困っています。
###補足情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/14 16:15
2016/08/14 23:32
2016/08/15 00:51
退会済みユーザー
2016/08/15 06:12