Unit 4 - Iteration:

  • This is the homework quiz for unit 4, iterations
  • 4 multiple choice questions
  • 2 programming hacks
  • 1 bonus programming hack (required to get above 0.9)

Question 1:

What does the following code print?

A. 5 6 7 8 9

B. 4 5 6 7 8 9 10 11 12

C. 3 5 7 9 11

D. 3 4 5 6 7 8 9 10 11 12

Click to reveal answer: D

Explain your answer. (explanation is graded not answer)

Answer

D because it starts at 3 and then keeps incremeenting/printing until it reaches 12 and afterward it break out of the loop.

for (int i = 3; i <= 12; i++) {
   System.out.print(i + " ");
}

Bonus:

  • Explain the difference between using a variable like i inside a for loop, vs. using a variable that exists in the code itself for a while loop

The difference between using a variable in a for loop is that ouside the for loop the variable isn’t applicable or doesnt work however for w hile loop the variable will still exist outside.

Question 2:

How many times does the following method print a “*” ?

A. 9

B. 7

C. 8

D. 6

Click to reveal answer: C

Explain your answer. (explanation is graded not answer)

Answer

C because it starts at 3 and goes till the number 10, so therefore it loops through 8 times and prints the asterisk each time.

for (int i = 3; i < 11; i++) {
   System.out.print("*");
}
********

Question 3:

What does the following code print?

A. -4 -3 -2 -1 0

B. -5 -4 -3 -2 -1

C. 5 4 3 2 1

Click to reveal answer: A

Explain your answer. (explanation is graded not answer)

Answer

A, since it starts at -5 however increments before printing so prints -4 first until it reaches 1 where it breaks out of the loop.

int x = -5;
while (x < 0)
{
   x++;
   System.out.print(x + " ");
}
-4 -3 -2 -1 0 

Question 4:

What does the following code print?

A. 20

B. 21

C. 25

D. 30

Click to reveal answer: B

Explain your answer. (explanation is graded not answer)

Answer

B, this is because it adds 22, then 42, as the even sum values, and then adds 1,3, and 5, so it becomes 12+9=21.

int sum = 0;

for (int i = 1; i <= 5; i++) {
    if (i % 2 == 0) {
        sum += i * 2;
    } else {
        sum += i;
    }
}

System.out.println(sum);
21

Loops HW Hack

Easy Hack

  • Use a while loop to find the numbers from 1-50 that are divisible by 3 or 5, then store them into a list (make sure to print it out at the end)
  • Use a for loop to do the same thing detailed above
import java.util.ArrayList;
int i=1;
ArrayList<Integer>values= new ArrayList();
while(i<=50){
    if(i%3==0 || i%5==0)
    values.add(i);
    i+=1;
}
System.out.println(values);



ArrayList<Integer>values2= new ArrayList();
for(int j=1;j<=50;j++){
    if(j%3==0 || j%5==0)
    values2.add(j);
}
System.out.println(values2);
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24, 25, 27, 30, 33, 35, 36, 39, 40, 42, 45, 48, 50]
[3, 5, 6, 9, 10, 12, 15, 18, 20, 21, 24, 25, 27, 30, 33, 35, 36, 39, 40, 42, 45, 48, 50]

Harder Hack

Palindromes are numbers that have the same value when reversed (ex: “123321” or “323”). Create a program that uses a while loop that outputs all palindromes in any given list.

Sample Input: test_list = [5672, 235, 5537, 6032, 317, 8460, 1672, 8104, 7770, 4442, 913, 2508, 1116, 9969, 9091, 522, 8756, 9527, 7968, 1520, 4444, 515, 2882, 6556, 595]

Sample Output: 4444, 515, 2882, 6556, 595

int[]test_list = {5672, 235, 5537, 6032, 317, 8460, 1672, 8104, 7770, 4442, 913, 2508, 1116, 9969, 9091, 522, 8756, 9527, 7968, 1520, 4444, 515, 2882, 6556, 595};

public boolean isPalindrome(String val){
    String reversed="";
    for(int i=val.length()-1;i>=0;i--){
        reversed+=val.charAt(i);
    }
    return reversed.equals(val);

}

for(int i:test_list){
    if(isPalindrome(String.valueOf(i))){
        System.out.println(i);
    }
}

4444
515
2882
6556
595

Bonus Hack (for above 0.9)

Use a for loop to output a spiral matrix with size n

Example:

Sample Input: n = 3

Output: [[1, 2, 3], [8, 9, 4], [7, 6, 5]]