Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing a Dictionary using user input returning double value

I'd like the user to input a String to access a key in the dictionary which then returns its coupled value. I'm sure this isn't the only thing wrong with my code but trying to see if I have the right idea and hoping for some additional direction:

Main two issues are writing the correct syntax to connect the user input getInput() (String) inside the function callfunc planetAndTime()The function is passing my dictionary as a parameter.

My other issue is returning my function's double value. ->Double`

func getInput() -> String{
      let kb: NSFileHandle = NSFileHandle.fileHandleWithStandardInput()
      let inputData: NSData = kb.availableData
      let strData = NSString(data: inputData, encoding:NSUTF8StringEncoding) as! String
return strData
}

/////////

let nameOfPlanetsAndTime:[String:Double] = ["Mercury":0.00000816,
   "Venus":0.00044, "Mars":0.0000239, "Jupiter":0.00062, "Saturn":0.000204,
   "Uranus":0.000289, "Neptune":0.000459, "Pluto":0.000794, 
   "Center of the Milky Way":25000.000000, "Earth's Cousin":1400.000000]

print("Choose planet")


func planetAndTime(nameOfPlanetsAndTime: [String:Double], userLocation:String) ->Double{
    let userLocation = getInput()
    if (nameOfPlanetsAndTime[userLocation] < 0){
        print("Not a Valid Location, Please Try Again")}
    else{
    nameOfPlanetsAndTime[userLocation]!
        print(nameOfPlanetsAndTime)
   }
}
like image 414
Ojay Avatar asked Jun 16 '26 03:06

Ojay


1 Answers

There are a few issues with your code that are due to a misunderstanding of how the Swift language works so I would recommend going through the official Swift documentation for some good examples of the Swift features. To give you a little head start however I will choose a section of your code. For example, instead of writing"

if (nameOfPlanetsAndTime[userLocation] < 0){
        print("Not a Valid Location, Please Try Again")}

you can write

guard let planet = nameofPlanetsAndTime[userLocation] {
    print("Not a Valid Location, Please Try Again")
    return nil
}

return planet

and change the return type of your function to an optional Double. So the method signature would look like

func planetAndTime(nameOfPlanetsAndTime: [String:Double], userLocation:String) ->Double?

Understanding optionals is super important in the Swift "world" and I highly recommend taking a good look at how to use them. I hope this little example is helpful.

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309

like image 99
Guillermo Alvarez Avatar answered Jun 17 '26 17:06

Guillermo Alvarez



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!