// Chapter 6 on Loops

public class Ch6
{

public void section6_1()
{ // invest $1000, when will it grow to $2000?
/*
double balance = 1000;
double goal = 2000;
double interestRate = 0.05;
double interest;
int years = 0;

while(balance < goal)
{
   years++;
   interest = balance * interestRate;
   balance = balance + interest;
   System.out.println("year " + years + " interest earned: " + interest + " balance: $" + balance);
}
*/

int i = 0; int sum = 0;
/*
while (sum < 10)
{
   i++;
   sum = sum + i;
   System.out.println("i: " + i + " sum: " + sum);
   // 1st time: i = 1, sum = 1
   // 2nd time: i = 2, sum = 3
   // 3rd time: i = 3, sum = 6
   // 4th time: i = 4, sum = 10
   // the loop terminates after 4 iterations
}
*/
/*

while (sum < 10)
{
   i++;
   sum = sum - i;
   System.out.println("i: " + i + " sum: " + sum);
   // lst time: i = 1, sum = -1
   // 2nd time: i = 2, sum = -3
   // 3rd time: i = 3, sum = -6
   // will be an infinite loop
}*/
/*

while (sum < 0)
{
   i++;
   sum = sum - i;
   System.out.println("i: " + i + " sum: " + sum);
} // This has no output because it doesn't run. sum < 0 is not true.
*/
/*

while (sum >= 10)
{
   i++;
   sum = sum + i;
   System.out.println("i: " + i + " sum: " + sum);
} // This has no output because it doesn't run. sum >= 10 is not true.
*/
/*

while (sum < 10) ; // The ; terminates the while loop. The loop runs infinitely and does nothing.
{
   i++;
   sum = sum + i;
   System.out.println("i: " + i + " sum: " + sum);
} *
/

// do-while loop
// a do-while loop will (unlike a while loop) always run at least once
// the condition that is checked is at the END of the loop
int count = 0;
do
{   count++;
   System.out.println("count: " + count);
} while (count < 10);
}

// for loops

public void section6_2()
{ // often used when you know how many times the loop will repeat
int start = 0; int end = 10; int j;
/*
for (j = start; j <= end; j++)
{
   System.out.print(j + " ");
} */

double balance = 100; double interest;
double interestRate = 0.05;
/*
for (int year = 0; year <= 20; year++)
{    interest = balance * interestRate;
   balance = balance + interest;
   System.out.println("current balance: " + balance);
} */

int i;
for (i = 0; i <= 5; i++)
{    System.out.print(i + " ");
}
System.out.println();


for (i = 5; i >= 0; i--)
{    System.out.print(i + " ");
}
System.out.println();

for (i = 0; i < 9; i = i + 2)
{    System.out.print(i + " ");
}
System.out.println();

/* infinite loop. i is always not equal to 9.
for (i = 0; i != 9; i = i + 2)
{    System.out.print(i + " ");
}
System.out.println(); */

for (i = 1; i <= 20; i = i * 2)
{    System.out.print(i + " ");
}
// expected output: 1 2 4 8 16
System.out.println();

String day = "Thursday";
for (i = 0; i < day.length(); i++)
{    System.out.print(day.charAt(i));
}
System.out.println();


}

public static void main(String[] args)
{ Ch6 c = new Ch6();
//c.section6_1();
c.section6_2();
}
}