我知道要在STDIN和STDOUT中编程,我们需要在Xcode中创建一个命令行项目。 但是如何在操场上进行标准输入。
每当我尝试在游乐场中运行此类代码时
var input = readLine()!
我总是收到此错误
执行被中断,原因是:EXC_BAD_INSTRUCTION (代码= EXC_l386_INVOP,子代码= 0x0)
是否可以在游乐场参加STDIN?
更新
我知道这个错误是因为 nil input
变量,但想知道如何克服这个nil值。
答案 0 :(得分:5)
SWIFT 3的固定解决方案
要使其工作,请创建一个新的命令行工具项目。
转到"文件" - > "新" - > "项目" - > " MACOS" - > "命令行工具"。
import Foundation
print("Hello, World!")
func solveMefirst(firstNo: Int , secondNo: Int) -> Int {
return firstNo + secondNo
}
func input() -> String {
let keyboard = FileHandle.standardInput
let inputData = keyboard.availableData
return NSString(data: inputData, encoding:String.Encoding.utf8.rawValue) as! String
}
let num1 = readLine()
let num2 = readLine()
var IntNum1 = Int(num1!)
var IntNum2 = Int(num2!)
print("Addition of numbers is : \(solveMefirst(firstNo: IntNum1!, secondNo: IntNum2!))")
使用CMD + R
答案 1 :(得分:3)
Playground无法从推荐行读取输入。
您可以使用自定义" readLine()"函数和全局输入变量,输入数组中的每个元素都显示一行:
import Foundation
var currentLine = 0
let input = ["5", "5 6 3"]
func readLine() -> String? {
if currentLine < input.endIndex {
let line = input[currentLine]
currentLine += 1
return line
} else {
return nil
}
}
let firstLine = readLine() // 5
let secondLine = readLine() // 5 6 3
let thirdLine = readLine() // nil
答案 2 :(得分:2)
尝试使用Optional Chaining:
if let input = readLine() {
print("Input: \(input)")
} else {
print("No input.")
}
答案 3 :(得分:0)
从命令行获取输入,如Console.ReadLine ... Chalkers 有如下解决方案。
func input() -> String {
var keyboard = NSFileHandle.fileHandleWithStandardInput()
var inputData = keyboard.availableData
return NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String
}
如果它不起作用,请进一步询问。
答案 4 :(得分:-1)
转到
新&gt;项目&gt; MacOs&gt;命令行工具
然后你可以申请:
让value1:String?
value1 = readLine()
print(value ?? "")
“”表示默认值