Arrays with Keyboard Interactivity

Today, we discussed how to create an array with keyboard interactivity. The user will be asked to enter how many numbers they will be entering and then they will be asked to enter numbers separated by a space.

//Program Name: Arrays with Keyboard Input
//Programmer Name: Eric Evans, M.Ed.
//Programmer Organization: Ferris High School
//Program Date: Spring 2017

import java.util.*;
import java.lang.*;
import java.io.*;

public class arrayKeys {
  public static void main(String args[]){
    Scanner count = new Scanner(System.in);
    System.out.print("How Many Numbers Do You Want to Enter?: ");
    int arraySize = count.nextInt();
    int myArray[] = new int[arraySize];
    Scanner nums = new Scanner(System.in);
    System.out.println("Enter Your " + arraySize + " numbers each separated by a space and press enter when done.");
    for(int counter = 0; counter < arraySize; counter++){
      myArray[counter] = nums.nextInt();
    }
  System.out.println(Arrays.toString(myArray));
  }
}

Following the header information (lines 1 through 4) and the imports (lines 6 through 8), we get to the actual application code.

On line 12, we declare a scanner object named “count” which will receive input from the keyboard.

On line 13, we ask the user to enter the number of items they will be entering. Lines 14 assigns the value that is entered as an integer variable named “arraySize”.

Line 15 creates an empty array named “myArray” which is initialized as the size of the “arraySize” variable declared on line 14.

Line 16 declares a second scanner object named “nums” which will receive the integers to the recorded from the keyboard.

On line 17, we ask the user to enter the integers they want recorded separated by a space.

Line 18 opens a for loop. The loop initialization creates an integer variable named “counter” with the value of 0. The loop condition is to run while the variable “counter” is less than the variable “arraySize”, which was declared on line 14. Each pass through the loop increments the value of the variable “counter” by 1.

Each pass through the loop executes line 19, which assigns the next integer in the sequence of numbers from the “nums” scanner to “myArray” in the index (position) declared by the “counter” variable.

Finally, on line 21, we output the contents of “myArray” as a string.

Coding Bat – rotateLeft3

This exercise requires that the program look at an array with 3 integers and shift their positions one index to the left (down) and place first integer (index 0) at the end.

Here is the code that you start with:

public int[] rotateLeft3(int[] nums) {

}

As you can see, we start with an empty integer array named “nums”.

public int[] rotateLeft3(int[] nums) {
  int[] rotatedArray = new int[]{nums[1],nums[2],nums[0]};
  return rotatedArray;
}

 

This solution creates a new integer array named “rotatedArray” and assigns it the values of each index from the original array. (Line 2)

We return the new array on line 3 to solve the problem.

Coding Bat – posNeg

This exercise requires that the program look at two given integers and a boolean. If the Boolean is TRUE AND both integers are negative, then TRUE is returned. If the Boolean is FALSE only 1 integer can be negative for to return TRUE.

Here is the code that you start with:

public boolean posNeg(int a, int b, boolean negative) {

}

As you can see, we start with 2 integer variables named “a” and “b” and a boolean named “negative”.

public boolean posNeg(int a, int b, boolean negative) {
  if (negative){
    if (a < 0 && b < 0){
      return true;
    } else {
      return false;
    } 
  } else if ((a < 0 && b > 0) || (a > 0 && b < 0)) {
    return true;
  } else {
    return false;
  }
}

This solution utilizes a nested if/then structure. Starting on line 2, we say IF the Boolean negative is TRUE, then proceed to line 3. If it is FALSE, we would jump to line 8.

On line 3, we now check to see if both “a” AND “b” are negative (less than 0). If they are, TRUE is returned (line 4). If they are not, FALSE is returned (lines 5-7).

Line 8 is executed if the Boolean on line 3 is FALSE. Line 8 looks to see if “a” is negative and “b” is positive OR “a” is positive and “b” is negative. If either case is TRUE, then TRUE is returned (line 9). If neither statement on line 8 is TRUE, then FALSE is returned (lines 10-12).

Coding Bat presents the following as their solution:

public boolean posNeg(int a, int b, boolean negative) {
  if (negative) {
    return (a < 0 && b < 0);
  }
  else {
    return ((a < 0 && b > 0) || (a > 0 && b < 0));
  }
}

In this solution, line 2 is identical to our line 2. However, their line 3 is shorter version of our lines (3-7). If both “a” AND “b” are not negative, then a FALSE is returned, otherwise a TRUE is returned.

Their lines 5-7 are our lines 8-12 and work the same way.

Robotic Systems Classifications Exam

We have spent the past 2 weeks covering 5 different classification systems of robotic and automated systems.

We have covered degrees of freedom, drive technology, kinematic structure, motion characteristics, and workspace geometry.

Robotic Classification Systems Notes

At the conclusion of this unit, students were given a review guide and an exam.

Robotics Classifications Exam

Robotics Classifications Exam Key

The results will be posted following the administration of the exam.

Coding Bat – Arrays Cluster 1

Today, while I was attending meetings, I assigned my students to complete 4 Coding Bat logic exercises.

CODING BAT – COMMONEND

This exercise requires that the program return TRUE if the first integers or last integers of two given arrays are the same, otherwise, FALSE will be returned.

Here is the code that you start with:

public boolean commonEnd(int[] a, int[] b) {

}

We start with two integer arrays named “a” and “b”.

public boolean commonEnd(int[] a, int[] b) {
  int arrayALength = a.length;
  int arrayBLength = b.length;
  int lastA = a[arrayALength - 1];
  int lastB = b[arrayBLength - 1];
  int firstA = a[0];
  int firstB = b[0];
  if(firstA == firstB || lastA == lastB){
    return true;
  }
  return false;
}

The solution above starts by calculating the length of each array (lines 2 and 3). Remember, whenever you are asked to do anything with the “end” or “last” items, you will almost always need to calculate the length.

On lines 4 & 5, we are establishing variables to hold the last index of each array and lines 6 & 7 are holding the first index of each array.

Finally, lines 8 through 10 are a conditional statement comparing the first indices of each array and the last indices of each array. If either of them are equal, a TRUE is returned. However, if neither is TRUE, then FALSE is returned.

CODING BAT – MAKELAST

This exercise requires that the program calculate the length of a given array and create a new array that is double that length populated with zeros with the exception of the last index. The last index is to populated with the last index of the first array.

Here is the code that you start with:

public int[] makeLast(int[] nums) {

}

We start with a single integer variable named “nums”.

public int[] makeLast(int[] nums) {
 int arrayLength = nums.length;
 int arrayFinalLength = arrayLength * 2;
 int arrayLast = nums[arrayLength - 1];
 int[] num = new int[arrayFinalLength];
 num[arrayLength - 1] = arrayLast;
 return num;
}

As always, since we are asked to do some operation with the “last” or “end”, we must calculate the length of the array. This is done on line 2.

On line 3, we created a variable to hold the length of the new array, which is double the length of the original array.

Line 4 is where we capture the last index of the original array.

On line 5, we create a new integer array named “num” which has a size assigned by the variable that was created on line 3.

On line 6, we replace the last index of the new array with the value of the variable created on line 4.

Finally, on line 7, we return the new array.

CODING BAT – MAKEPI

This exercise requires that the program return the first 3 digits of PI in an array.

Here is the code that you start with:

public int[] makePi() {

}

We start with just the basic class declaration and no variables.

public int[] makePi() {
  int pi[] = {3,1,4};
  return pi;
}

The solution above starts by creating a new integer array named “pi” which is assigned the integers of 3, 1, and 4 on line 2.

On line 3, the array is returned.

Many students struggle to make this problem more challenging than it needs to be. Some try to take the Math.PI constant and populate the array one index at a time. However, this is not necessary and is not outlined as a requirement in the problem.

 

Coding Bat – Cluster 3

Today, while wrapping-up our conversation over arrays, we worked a series of 3 different basic array problems from Coding Bat.

CODING BAT – CIGARPARTY

This exercise requires that the program return true if number of cigars is between 40 and 60 on weekdays and at least 40 on weekends.

Here is the code that you start with:

public boolean cigarParty(int cigars, boolean isWeekend) {

}

We start with a single integer named cigars and a boolean named isWeekend.

public boolean cigarParty(int cigars, boolean isWeekend) {
  if (isWeekend){
    if (cigars >= 40){
      return true;
    }else{
      return false;
    }
  }else{
    if (cigars >=40 && cigars <=60){
      return true;
    }else{
      return false;
    }
  }
}

The solution above starts with a Boolean conditional to check to see if it is a weekend (line 2). If it is not a weekend, then the code jumps to line 8. However, if it is a weekend, the code continues on to line 3.

Line 3 looks to see if the number of cigars is at least 40. If it is, then a TRUE is returned, otherwise a FALSE is returned.

If it is not a weekend, the code jumped to line 8. Starting at line 9, we look to see if the number of cigars is between 40 and 60. If it is, then a TRUE is returned, otherwise a FALSE is returned.

CODING BAT – DATEFASHION

This exercise requires that the program calculate the probability of you and your date getting a table at a restaurant based upon how stylish the clothes you and your date are wearing.

Here is the code that you start with:

public int dateFashion(int you, int date) {

}

We start with two integer variables named “you” and “date”.

public int dateFashion(int you, int date) {
  if (you <= 2 || date <= 2){
    return 0;
  }else if(you >= 8 || date >= 8){
    return 2;
  }else{
    return 1;
  }
}

Our first Boolean conditional statement is located on line 2 where we check to see if either “you” or your “date” are wearing anything that is a 2 or lower. If so, then a “0” is returned.

If the first Boolean is FALSE, then we move to the second Boolean conditional statement on line 4 which is checking to see if either “you” or your “date” are wearing anything that is an 8 or higher. If so, then a “2” is returned.

Finally, if second Boolean is also FALSE, then we automatically return a “1” as the numbers for “you” and your “date” are between 2 and 8 exclusive of those numbers.

CODING BAT – SQUIRRELPLAY

This exercise requires that the program state whether the squirrels will come out to play. The squirrels like to play when the temperature is between 60 and 90 degrees, unless it is summer. In the summer, they will stay out up to 100 degrees.

Here is the code that you start with:

public boolean squirrelPlay(int temp, boolean isSummer) {

}

We start with one integer variable named “temp” and a boolean variable named isSummer.

public boolean squirrelPlay(int temp, boolean isSummer) {
  if (isSummer){
    if (temp >= 60 && temp <= 100){
      return true;
    }else{
      return false;
    }
  }else{
    if (temp >= 60 && temp <= 90){
      return true;
    }else{
      return false;
    }
  }
}

The solution above starts with a Boolean conditional to check to see if it is summer (line 2). If it is not summer, then the code jumps to line 8. However, if it is summer, the code continues on to line 3.

Line 3 looks to see if the temperature is between 60 and 100 degrees. If it is, then a TRUE is returned, otherwise a FALSE is returned.

If it is not summer, the code jumped to line 8. Starting at line 9, we look to see if the temperature is between 60 and 90 degrees. If it is, then a TRUE is returned, otherwise a FALSE is returned.

CODING BAT – ALARMCLOCK

This exercise requires that the program return what time the alarm clock with sound with the given criteria:

  • If it is a vacation weekday, then the alarm will sound at 10:00.
  • If it is a vacation weekend, then the alarm is off.
  • If it a weekday, then the alarm will sound at 7:00.
  • If it is a weekend, then the alarm will sound at 10:00.

Here is the code that you start with:

public String alarmClock(int day, boolean vacation) {

}

As you can see, we have an integer variable named “day” and a Boolean variable named “vacation”.

public String alarmClock(int day, boolean vacation) {
  if (vacation){
    if (day >= 1 && day <= 5){
      return "10:00";
    }else{
      return "off";
    }
  }else{
    if (day >= 1 && day <= 5){
      return "7:00";
    }else{
      return "10:00";
    }
  }
}

Staring at line 2, we have a Boolean conditional which looks to see if it is a vacation. If it is not a vacation day, then the code skips to line 8. If it is a vacation day, then we proceed to line 3 where we look to see if it is a weekday (days 1 through 5). If it is a weekday, the application will return the string “10:00” otherwise, the application returns the string “off”.

Looking at line 9, we are processing for a non-vacation day and look to see if it is a weekday (days 1 through 5) and then return the string “7:00” if it is a weekday. If it is a weekend, then we return the string “10:00”.

Coding Bat – firstLast6

This exercise requires that the program analyze an array of integers and return TRUE if either the first or last integer is a 6. The array is guaranteed to have a minimum length of 1.

Here is the code that you start with:

public boolean firstLast6(int[] nums) {

}

As you can see, we have a single integer array named nums.

public boolean firstLast6(int[] nums) {
 int first = nums[0];
 int last = nums[nums.length-1];
 if (first == 6 || last == 6){
   return true;
 }
 return false;
}

This solution utilizes a conditional if with the Boolean OR to solve the problem.

We start my declaring an integer variable named “first” to retrieve the value of index 0 (line 2).

We then declare an integer variable named “last” to retrieve the value of the last letter (Line 3)

As was the case when working with strings, to retrieve the last index of the array, we must first calculate its length and then subtract 1 from the total length. This will give us the value of the last index of the array.

Lines 4 through 6 are the conditional Boolean OR looking to see if either the first or last number are 6. If the Boolean is TRUE, then TRUE is returned.

Coding Bat – sameFirstLast

This exercise requires that the program analyze an array of integers and return TRUE if the array has a length greater than 1 and the first index is the same as the last index.

Here is the code that you start with:

public boolean sameFirstLast(int[] nums) {

}

As you can see, we have a single integer array named nums.

public boolean sameFirstLast(int[] nums) {
 if (nums.length >= 1){
   int first = nums[0];
   int last = nums[nums.length-1];
   if (first == last){
     return true;
   }
   return false;
   }
 return false;
}

We start on line 2 checking to see if the array has a minimum length of 1. If is does not, we skip to line 10 and return FALSE. If the Boolean on line 2 is true, we proceed to line 3.

We then declare an integer variable named “first” to retrieve the value of index 0 (line 3).

We then declare an integer variable named “last” to retrieve the value of the last letter (Line 4)

As was the case when working with strings, to retrieve the last index of the array, we must first calculate its length and then subtract 1 from the total length. This will give us the value of the last index of the array.

Lines 5 through 7 are the conditional Boolean looking to see if the first and last index are the same value. If the Boolean is TRUE, then TRUE is returned.

Robotics Tour to Ferris Intermediate

As part of the community outreach efforts for FTC 11242 (ERROR 404), the team visited with the students of all 19 homeroom classes at Ferris Intermediate School individually. This took a total of 4 full days to complete.

As opposed to just “showing off the robot” our efforts centered around working with the 4th and 5th grade girls discussing that gender has nothing to do with ability to succeed in mathematics, science, or engineering.