Как я могу сравнить два разных типа данных (String и Int) с помощью readLine() в Swift?

Каждый! Я новый участник Stack Overflow, как и новичок в быстром программировании. Я делаю этот пост, чтобы найти решение для следующего случая:

Я создаю на Swift приложение, используя инструмент командной строки для ввода данных. Приложение в основном работает как аутентификатор. Например, если кто-то введет США в качестве названия страны и возраст 17 лет, программа вернет сообщение типа «Вы не можете подать заявку на эту должность». В противном случае, если название страны — США, а возраст равен или выше 18 лет, возвращается сообщение «Вы можете перейти к следующему шагу». Я много раз пытался установить эти условия, но это не сработало. Я уже знаю, что функция readLine() является опциональной строкой, но как я могу заставить свою программу работать правильно? Это следует моему коду выше, чтобы вы поняли мои мысли.

Я очень ценю любую помощь. Опять же, я новичок и уже изучаю языки Swift, но я ищу какое-то решение, которое обрабатывает целые числа и строки и сравнивает оба типа данных. Большое спасибо!

Мой код:

import Foundation

print("Enter your country: ")
var country = readLine()

print("Enter your age: ")
var age = readLine()

if var country, var age = readLine(){
    if country == "USA" && age < "18" {
        print("You're not allowed to apply to this position.")
    } else {
        print("You can forward to the next step.")
    }
    
}


PS: Как видите, я неправильно использую переменную age в качестве строки, но я хочу преобразовать ее в тип Int, а затем проверить, совпадает ли название страны со значением, которое я присвоил, или возраст равен или выше 18. Но решения пока не нашел.

Я пытаюсь найти решение, которое сравнивает два разных типа на Swift, используя инструмент командной строки и функцию readLine(), чтобы проверить, истинно ли условие или нет. Если это правда, выходное сообщение покажет, что пользователь может перейти к следующему шагу, в противном случае ему не будет разрешено следовать. Я держу объяснение в Интернете с нескольких дней, но не нашел ничего, что могло бы мне помочь. Я надеюсь получить некоторую помощь, используя форум Stack Overflow, чтобы получить полезный ответ.

Отвечает ли это на ваш вопрос? Как преобразовать вывод Swift 3 readLine() в Integer?

HangarRash 19.11.2022 01:32

Я пытался сделать что-то еще, как показано в упомянутой вами теме, но я все еще сталкиваюсь с ошибками в своем коде. А также я вижу, что одно из обоих условий (одна строка, другое целое число) выполняется, даже если одно из них ложно. Это моя проблема. Но я благодарю вас за внимание. Я продолжаю искать решение по этому делу.

Heber Neto 19.11.2022 02:06
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
1
2
106
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я надеюсь, что это поможет вам :)

import Foundation

print("Enter your country: ")
if let country = readLine() {
  if let num = Int(country) {
      print(num)
      }
    }
      let country = readLine()
let age = readLine()


if let USA = country, 
    let num1 = Int(USA), 
    let num2 = Int(USA) {
    print("The age of \(num1) and \(num2) is \(num1 + num2)")
}

Большое спасибо за твою помощь. Я пытаюсь решить эту проблему некоторое время, и теперь я лучше понимаю это.

Heber Neto 19.11.2022 02:59

Почему этот ответ был принят? Слишком много обращений к readLine. Он пытается превратить страну в Int. Он пытается добавить возраст и страну. Этот ответ никогда ничего не объяснял. Вы действительно должны принять другой ответ.

HangarRash 19.11.2022 02:59

Дорогая Рима, при чем здесь США? Похоже, вы не понимаете этого конкретного вопроса

Thang Phi 19.11.2022 03:00
Ответ принят как подходящий

Во-первых, readline() означает, что вы читаете текущий до конца текущей строки. В качестве вашего кода, когда вы проверяете условие, вы снова вызываете readLine(). Неправильная часть здесь.

Я рекомендую вам сначала прочитать, а затем сделать всю свою логику. Вам просто нужно сначала прочитать только один раз

print("Enter your country: ")
var country = readLine()

print("Enter your age: ")
var ageString = readLine()

Затем проверьте, равно ли оно нулю или нет (потому что значение опции, которое является значением, может быть нулевым)

if country == nil || ageString == nil {
    print("Error because one of them is nil")
    fatalError()
}

Затем проверьте, можно ли конвертировать в Int или нет. Доберитесь сюда, если вы уверены, что ageString не равен нулю, потому что вы проверили выше. Таким образом, вы просто конвертируете

guard let ageString = ageString else {
    print("Error age nil")
    fatalError()
}

guard let age = Int(ageString) else {
    print("Error age not a number")
    fatalError()
}

Тогда ведь вы просто проверяете свое состояние

Полный код будет таким

print("Enter your country: ")
var country = readLine()

print("Enter your age: ")
var ageString = readLine()

// check nil first if nil return or do something first and not get to the rest
if country == nil || ageString == nil {
    print("Error because one of them is nil")
    fatalError()
}

guard let ageString = ageString else {
    print("Error age nil")
    fatalError()
}

guard let age = Int(ageString) else {
    print("Error age not a number")
    fatalError()
}

if country == "USA" && age < 18 {
    print("You're not allowed to apply to this position.")
} else {
    print("You can forward to the next step.")
}

Другие методы используются if let для достижения того, чтобы не было принудительного развертывания.

print("Enter your country: ")
var country = readLine()

print("Enter your age: ")
var ageString = readLine()

// check nil first if nil return or do something first and not get to the rest
if country == nil || ageString == nil {
    print("Error because one of them is nil")
    fatalError()
}

if let ageString = ageString {
    if let age = Int(ageString) {
        if country == "USA" && age < 18 {
            print("You're not allowed to apply to this position.")
        } else {
            print("You can forward to the next step.")
        }
    } else {
        print("Error age not a number")
        fatalError()
    }
}

Большое спасибо за вашу благодарную помощь. Я пытался понять, как преобразовать строку в число int. Это мне очень помогло. Еще раз спасибо. Я получу ваш код и изучу его, чтобы улучшить свои навыки в Swift. Да благословит тебя Бог, человек!

Heber Neto 19.11.2022 02:54

Хороший ответ, за исключением принудительного развертывания ageString. Я бы не показал это новичку. Это слишком опасно. Правильно используйте if let.

HangarRash 19.11.2022 03:02

Уважаемый @HangarRash, обновлены методы if let для SO, чтобы иметь разные подходы

Thang Phi 19.11.2022 03:07

РЕШЕНИЕ РЕШЕНО!

Привет, ребята, прежде всего я хочу поблагодарить всех вас за ваши полезные ответы, которые мне очень помогли. Наконец-то у меня есть решение, и я собираюсь поделиться им с вами.

Что я сделал? Я только что создал две переменные, одну String и другую Integer. Затем, используя if var, чтобы принудительно развернуть переменную Int, я сделал оператор if, чтобы проверить, верны ли оба условия (в случае, если человек из США и его возраст равен или выше 18) . Теперь программа работает так, как я и хотел. Если вы из США, но вам нет 18 лет, вывод вернет сообщение о том, что вы не можете подать заявку. В противном случае вы можете переслать.

Я дам код выше. Если вы хотите сделать некоторые комментарии или какие-либо предложения, это будет приветствоваться.

Еще раз большое спасибо за все ваши ответы.

var countryCheck = "USA"
var ageCheck: Int = 18

print("Enter your country: ")
var country = readLine()

print("Enter your age: ")
var age = readLine()

if var countryCheck = country, var ageCheck = Int(age!) {
    if countryCheck == "USA" && ageCheck >= 18 {
        print("You can apply.")
    } else {
        print("You can not apply to this position.")
    }
}

Другие вопросы по теме