Массив Илтерация Рубин - PullRequest
       2

Массив Илтерация Рубин

0 голосов
/ 14 декабря 2018

Проблема просит напечатать все числа из массива, которые больше 100. Когда я запускаю это:

array = [3, 123, 433, -77, 56, 200, 99, 101, 6]

index = 0
9.times do
  if array[index] > 100 == 0
    p array[index]
  end
  index = index + 1
end

, печатается число 9.Я положил в надлежащее условное число, если число было больше 100, чтобы получить принтер.Кто-нибудь может помочь?

Ответы [ 5 ]

0 голосов
/ 16 декабря 2018

Select возвращает свой собственный массив.Таким образом, мы можем просто напечатать возвращаемое значение.

puts array.select{|x| x > 99}
0 голосов
/ 14 декабря 2018

Вы написали 9.times, который является размером вашего массива, который указывает, что вы хотите запустить его для всех элементов массива.Поэтому используйте каждый блок в массиве.

array.each { |x| puts x if x > 100 }

Постарайтесь понять, почему нет роли index любого элемента массива выше.

0 голосов
/ 14 декабря 2018

Просто используйте

if array[index] > 100
  # print
end

9 - это оценка вашей программы, это не «печать», это результат 9.times

0 голосов
/ 14 декабря 2018

Проблему действительно легко решить, если вы знаете, какие инструменты использовать:

array = [3,123,433,-77,56,200,99,101,6]

array.select { |n| n > 100 }.each do |n|
  puts n
end

Где select может помочь сузить списки чисел.В классе Ruby Array есть необычно большое количество таких методов, которые могут быстро и легко выполнять различные действия, связанные с фильтрацией и отображением.

Часть 9.times в вашем коде была отделена от фактической длинымассив, что приводит к большому количеству ошибок, если вы добавляете / удаляете записи, и эти два не синхронизируются.

По возможности используйте итераторы массива, например:

array = [3,123,433,-77,56,200,99,101,6]

array.each do |n|
  if (n > 100)
    puts n
  end
end
0 голосов
/ 14 декабря 2018

Ваша программа не печатает ни одно из значений массива из-за этого условия

if array[index] > 100 == 0

это должно быть просто

if array[index] > 100

, не знаю, почему вы добавляете это == 0

array[index] > 100 оценивается раньше, поэтому все время вы всегда получаете true == 0 или false == 0, и это никогда не соответствует действительности.Так что никаких отпечатков в вашем коде

о тех 9, которые появляются, это то, что Алексей говорит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...