2016-03-10 3 views
0

Я пытаюсь написать программу, которая принимает числовой ввод от пользователя и сохраняет его в строке, а затем я пытаюсь преобразовать эту строку в целое число для дальнейшего использования. Всякий раз, когда я его конвертирую, он отображает nil для целочисленного значения, но печатает вход, когда он хранится в виде строки. Вот мой код до сих пор. Это мой первый раз, когда я пытаюсь писать быстро.Пытается преобразовать входную строку в целое число в Swift

import Foundation 

func input() -> String{ 
    var keyboard = NSFileHandle.fileHandleWithStandardInput() 
    var inputData = keyboard.availableData 
    return NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String 
} 


print("What is a number: ") 

let user: String? = input() 
print("You typed: " + user!) 

var num = Int(user!) 
print("Your number was" ,(num)) 
+0

Что делать, если ваш вклад не число? Или вы просто предполагаете, что ввод будет номером – Lee

+1

'user' содержит символ новой строки в конце, поэтому ваше преобразование в' Int' не выполняется. –

+0

Как избавиться от символа новой строки –

ответ

0

Int функция возвращает необязательного целого, так что если ваша строка не может быть преобразована он будет возвращать ноль. Если присвоить ему значение, которое он может конвертировать, вы получите результат, который вы ищете:

let user: String = "5" 
var num = Int(user) 

if let num = num { 
    print("Your number was \(num)") 
} else { 
    print("Your number is nil") 
} 

Кроме того, ваша input функция возвращающая String, но вы определяете переменную user как по желанию String?

0

после поиска вокруг и пробовать разные вещи, я был в состоянии сделать то, что я хотел делать после того, как ...

var user = input() 
var newString = user.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) 
Смежные вопросы