Чрезвычайно базовый c l oop вопрос о том, является ли число четным / нечетным - PullRequest
0 голосов
/ 30 апреля 2020
var currentnum: Int = 1

for currentnum in 1...100{
  if (currentnum % 2) != 0 {
    print("Odd number")
  }
  else{
    print("Even number")
  }
  currentnum += 1
}

Привет. Я пытаюсь «создать al oop, который повторяет от 1 до 100, который выводит, является ли текущее число в итерации четным или нечетным». Когда я запускаю приведенный выше код, я получаю «ошибка: ожидаемое выражение после оператора». Что не так с моим кодом (я новичок в программировании). Спасибо!

Ответы [ 5 ]

1 голос
/ 30 апреля 2020

В отличие от некоторых языков, вам не нужно определять индексную переменную перед вводом for-in l oop, и при этом вам не нужно вручную увеличивать индекс.

Вы также можете использовать новую функцию swift isMultiple(of:) вместо modulus

Если вы хотите l oop через заданный диапазон, вы можете сделать:

for num in 1...100 {
    if num.isMultiple(of: 2) {
        print("\(num) is an even number")
    } else {
        print("\(num) is an odd number")
    }
}

Если у вас есть набор значений в массиве, который вы можно сделать это:

let numbers = [1,5,12,23,25,27,30,32,35]

for num in numbers {
    if num.isMultiple(of: 2) {
        print("\(num) is an even number")
    } else {
        print("\(num) is an odd number")
    }
}
0 голосов
/ 30 апреля 2020

Один лайнер без л oop за запрос в комментариях

Array(1...100).map{$0 % 2 == 0 ? print("\($0) is even") : print("\($0) is odd") }
0 голосов
/ 30 апреля 2020

@ BeginnerCoderGirl Я изменил ваш код, пожалуйста, отметьте, просто удалите currentnum + = 1 из кода и запустите

0 голосов
/ 30 апреля 2020

Вам не нужно объявлять var currentnum: Int = 1 в своем коде и увеличивать до currentnum += 1. for-in l oop делает это за вас. В Swift for-in синтаксис может использоваться для l oop в обоих диапазонах чисел, коллекций и даже строк. Все с одинаковым синтаксисом!

Должно быть так:

for currentnum in 1...100{
  if (currentnum % 2) != 0 {
    print("Odd number")
  }
  else{
    print("Even number")
  }
}

Удачи!

0 голосов
/ 30 апреля 2020

Вы должны избавиться от этого выражения currentnum += 1. Поскольку вы используете оператор In .. Range , нет необходимости увеличивать счетчик. Об этом позаботится оператор In .. Range. Это отличается от базовых c для l oop от Java или C ++, где вам нужно увеличить переменную счетчика.

Кроме того, первая объявленная переменная currentnum никогда не используется. Эту переменную тоже можно удалить.

Остальная часть вашего алгоритма выглядит хорошо и должна работать!

Надеюсь, это поможет!

...