Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

iOS Swift Basics (retired) Control Flow While and Do-While Loop

Ros Zunra
Ros Zunra
767 Points

About the while loop challenge

After I successfully completed the challenge(with the numbers.count method), I tried another way/expression but it didn't work out, which I don't get why.

Q: Given an array of numbers, print out each number in the array using a while loop and the println statement.

let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

var dex = 0

while numbers[dex] < 11 {

    println(numbers[dex])

    dex++

}

Thank you!!

2 Answers

Greg Kaleka
Greg Kaleka
39,019 Points

Did you actually write println(numbers[dex]) dex++ on one line like that? If so, that's your problem.


Edit: OK, now that I'm looking at this again, I see the issue. If you think about what will happen as you go through the while loop, you'll see what happens:

  • 1st time through: checks if numbers[0], which is 1, is less than 11, which it is
  • 2nd time through: checks if numbers[1], which is 2, is less than 11, which it is

    ...

  • 10th time through: checks if numbers[9], which is 10, is less than 11, which it is

  • 11th time through: checks if numbers[10] is less than 11 - gets an error because numbers[10] doesn't exist

Make sense?

Ros Zunra
Ros Zunra
767 Points

Hi Greg, I actually broke them into 2 lines like this. Sorry I didn't notice the change in this post.

{println(numbers[dex])

dex++

}

Benjamin Zawodni
Benjamin Zawodni
1,732 Points

Did you try this in Xcode? It looks like it's correct, and should work.

I've found that with these challenges they look at more than just the output sometimes. I suspect they want you to learn the "preferred" method.