# Final Review December 6

## Classes

Here is how you can create a class called "Employee" with a non-default constructor (a constructor that takes parameters) and a getter and setter

    public class Employee {
      // Our private variables
      private String name;
      private double salary;
      // Non-default constructor
      public Employee(String name, double salary) {
        this.name = name;
        this.salarly = salary;
      }
      // This is a getter
      public string getName() {
        return name;
      }
      public double setSalarly(double salary) {
        this.salary = salary;
      }
    }

## For Loops + Arrays

For loops are constructed in the following way

`for (initialization; condition to stop; increment to get closer to condition to stop)`

    //Assume an array with variable name array is declared before
    for (int i = 0; i < array.length; i++) {
      // This code will loop through every entry in the array
    }

Note that you don't always have to start from zero, you can start anywhere from the array.

## For Loops + Arrays + Methods

This is an example of how you can take in an array in a method

    public static boolean isEven(int[] array) { // <-- Note the int[] array
      for (int i = 0; i < array.length; i++) { // Iterate through the entire array
        // If you find an odd number, return false
        if (array[i] % 2 == 1) {
          return false;
        }
      }
      // If you didn't find any odd numbers, return true
      return true;
    }

## File I/O

Let's say that you have the following file

    4
    chicken
    3
    salad

And you want to make it so that you take the number, and print the word after it a certain number of times. For this example we would want to see the following

    chicken chicken chicken chicken
    salad salad salad

Here is the code to write it

    public static void printStrings() {
      FileInputStream file = new FileInputStream("stuff.txt"); // File contents are in stuff.txt
      Scanner scnr = new Scanner(file); // Scanner takes in a file to read
      while (scnr.hasNext()) { // While there are still stuff in the file to read
        int number = scnr.nextInt(); // Grab the number
        String word = scnr.next(); // Grab the word after the number
        // Print the word number times
        for (int i = 0; i < number; i++) {
          System.out.print(word);
        }
        // Put a new line here
        System.out.println();
      }

    }

## Recursion

Look at handout and carefully trace recursion problems

## 2D Arrays

Declare a 2D int array with 4 rows and 7 columns

    int[][] dataVals = new int[4][7];

A 2D array with 4 rows and 7 columns has 7 * 4 = 28 entries.

If you want to sum up all the numbers in a 2 dimensional array, do the following

    // Assume numbers is declared beforehand
    int sum = 0;
    for (int i = 0; i < numbers.length; i++) { // Loop through every row in the 2D array
      for (int j = 0; j < numbers[i].length; j++) { // Loop through every column in a row
        // This code now looks at one entry in a 2D array
        sum += numbers[i][j];
      }
    }