add lab 6
This commit is contained in:
6 files changed
+489
No files matched your search
@@ -0,0 +1,70 @@
|
|||||||
|
package ca.bcit.comp1510.lab06;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads baseball data in from a comma delimited file. Each line
|
||||||
|
* of the file contains a name followed by a list of symbols
|
||||||
|
* indicating the result of each at bat: h for hit, o for out,
|
||||||
|
* w for walk, s for sacrifice. Statistics are computed and
|
||||||
|
* printed for each player.
|
||||||
|
* @author Braeden Sowinski
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
public class BaseballStats {
|
||||||
|
/**
|
||||||
|
* main program entry.
|
||||||
|
* Reads baseball stats from a file and counts
|
||||||
|
* total hits, outs, walks, and sacrifice flies
|
||||||
|
* for each player.
|
||||||
|
* @param args unused.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) throws FileNotFoundException {
|
||||||
|
Scanner fileScan;
|
||||||
|
Scanner lineScan;
|
||||||
|
String fileName;
|
||||||
|
|
||||||
|
Scanner scan = new Scanner(System.in);
|
||||||
|
String basePath = "src/ca/bcit/comp1510/lab06/";
|
||||||
|
|
||||||
|
System.out.print("Enter the name of the input file: ");
|
||||||
|
fileName = scan.nextLine();
|
||||||
|
fileScan = new Scanner(new File(basePath + fileName));
|
||||||
|
|
||||||
|
while (fileScan.hasNext()) {
|
||||||
|
lineScan = new Scanner(fileScan.nextLine());
|
||||||
|
lineScan.useDelimiter(",");
|
||||||
|
|
||||||
|
System.out.print(lineScan.next() + " ");
|
||||||
|
|
||||||
|
int outs = 0;
|
||||||
|
int hits = 0;
|
||||||
|
int sacs = 0;
|
||||||
|
int walks = 0;
|
||||||
|
while (lineScan.hasNext()) {
|
||||||
|
String current = lineScan.next();
|
||||||
|
hits += current.equals("h") ? 1 : 0;
|
||||||
|
outs += current.equals("o") ? 1 : 0;
|
||||||
|
sacs += current.equals("s") ? 1 : 0;
|
||||||
|
walks += current.equals("w") ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.print(hits + " hits, "
|
||||||
|
+ outs + " outs, "
|
||||||
|
+ sacs + " sacrifices, "
|
||||||
|
+ walks + " walks, ");
|
||||||
|
|
||||||
|
final double percent = 100.0;
|
||||||
|
double average = ((float) (hits) / (float) (hits + outs)) * percent;
|
||||||
|
System.out.printf("batting average: %.2f%s", average, "%");
|
||||||
|
|
||||||
|
System.out.println();
|
||||||
|
lineScan.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
scan.close();
|
||||||
|
fileScan.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package ca.bcit.comp1510.lab06;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factorial calculates stuff.
|
||||||
|
* @author Braeden Sowinski
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
public class Factorial {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* readPositiveInt reads and validates an integer.
|
||||||
|
* @return validated int
|
||||||
|
*/
|
||||||
|
private static int readPositiveInt() {
|
||||||
|
Scanner scan = new Scanner(System.in);
|
||||||
|
|
||||||
|
int number = -1;
|
||||||
|
|
||||||
|
while (number < 0) {
|
||||||
|
System.out.print("Enter a non-negative integer: ");
|
||||||
|
|
||||||
|
if (!scan.hasNextInt()) {
|
||||||
|
System.out.println(scan.next() + " is not a number.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
number = scan.nextInt();
|
||||||
|
|
||||||
|
if (number < 0) {
|
||||||
|
System.out.println(number + " is a negative number.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
scan.close();
|
||||||
|
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main program entry.
|
||||||
|
* @param args unused
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
int number = readPositiveInt();
|
||||||
|
|
||||||
|
if (number == 0) {
|
||||||
|
System.out.println("The factorial of 0 is 1.");
|
||||||
|
} else {
|
||||||
|
int product = 1;
|
||||||
|
for (int i = 2; i <= number; i++) {
|
||||||
|
product *= i;
|
||||||
|
}
|
||||||
|
System.out.println("The factorial of "
|
||||||
|
+ number + " is "
|
||||||
|
+ product + "."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
package ca.bcit.comp1510.lab06;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mathematics2 does more math stuff.
|
||||||
|
* @author Braeden Sowinski
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
public class Mathematics2 {
|
||||||
|
|
||||||
|
/** FOOT_TO_KILOMETRE_RATIO is important. */
|
||||||
|
public static final double FOOT_TO_KILOMETRE_RATIO = 0.0003048;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getSquareArea returns square of input.
|
||||||
|
* @param d input to get square.
|
||||||
|
* @return square area.
|
||||||
|
*/
|
||||||
|
public double getSquareArea(double d) {
|
||||||
|
return d * d;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add two floating point numbers.
|
||||||
|
* @param d first number
|
||||||
|
* @param e second number
|
||||||
|
* @return sum of d and e
|
||||||
|
*/
|
||||||
|
public double add(double d, double e) {
|
||||||
|
return d + e;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* multiply two floating point numbers.
|
||||||
|
* @param d first number
|
||||||
|
* @param e second number
|
||||||
|
* @return product of d and e
|
||||||
|
*/
|
||||||
|
public double multiply(double d, double e) {
|
||||||
|
return d * e;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* subtract floating point number from another.
|
||||||
|
* @param d number
|
||||||
|
* @param e number to subtract
|
||||||
|
* @return difference of d and e
|
||||||
|
*/
|
||||||
|
public double subtract(double d, double e) {
|
||||||
|
return d - e;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* divide two floating point numbers.
|
||||||
|
* @param i first number
|
||||||
|
* @param j divide by
|
||||||
|
* @return quotiant of i and j
|
||||||
|
*/
|
||||||
|
public double divide(int i, int j) {
|
||||||
|
if (j == 0) {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
return i / j;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* absoluteValue converts negative numbers to positive.
|
||||||
|
* @param i number
|
||||||
|
* @return i as a positive number
|
||||||
|
*/
|
||||||
|
public int absoluteValue(int i) {
|
||||||
|
if (i >= 0) {
|
||||||
|
return i;
|
||||||
|
} else {
|
||||||
|
return i * -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* getRandomNumberBetweenTenAndTwentyButNotFifteen
|
||||||
|
* does as the name says.
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public int getRandomNumberBetweenTenAndTwentyButNotFifteen() {
|
||||||
|
final int max = 21;
|
||||||
|
final int min = 10;
|
||||||
|
final int bad = 15;
|
||||||
|
|
||||||
|
int rand = bad;
|
||||||
|
while (rand == bad) {
|
||||||
|
rand = (int) (Math.random() * (max - min)) + min;
|
||||||
|
}
|
||||||
|
return rand;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* convertFeetToKilometres.
|
||||||
|
* @param d number of feet
|
||||||
|
* @return kilometres.
|
||||||
|
*/
|
||||||
|
public double convertFeetToKilometres(double d) {
|
||||||
|
return d * FOOT_TO_KILOMETRE_RATIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sumOfProducts.
|
||||||
|
* @param i min/max
|
||||||
|
* @param j step
|
||||||
|
* @return sum
|
||||||
|
*/
|
||||||
|
public int sumOfProducts(int i, int j) {
|
||||||
|
int sum = 0;
|
||||||
|
if (i >= 0) {
|
||||||
|
for (int k = j; k <= i; k += j) {
|
||||||
|
sum += k;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int k = -j; k >= i; k -= j) {
|
||||||
|
sum += k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
package ca.bcit.comp1510.lab06;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MathematicsTest.
|
||||||
|
*
|
||||||
|
* @author BCIT
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class Mathematics2Test {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Mathematics object to test.
|
||||||
|
*/
|
||||||
|
private Mathematics2 math;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Mathematics objects before each test is executed.
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
* if a Mathematics object cannot be created.
|
||||||
|
*/
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
math = new Mathematics2();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for the value of ONE_FOOT_TO_KILOMETER_RATIO.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFeetToKMRatioValue() {
|
||||||
|
assertEquals(0.0003048, Mathematics2.FOOT_TO_KILOMETRE_RATIO, 0.0000001);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests getSquareArea method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testGetSquareArea1() {
|
||||||
|
double area = math.getSquareArea(2.0);
|
||||||
|
assertEquals(4.0, area, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests getSquareArea method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testGetSquareArea2() {
|
||||||
|
double area = math.getSquareArea(32.0);
|
||||||
|
assertEquals(1024.0, area, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests add method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testAdd1() {
|
||||||
|
double sum = math.add(6.0, 7.0);
|
||||||
|
assertEquals(13.0, sum, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests add method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testAdd2() {
|
||||||
|
double sum = math.add(-6.0, 6.0);
|
||||||
|
assertEquals(0.0, sum, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests multiply method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiply1() {
|
||||||
|
double product = math.multiply(1.0, 5.0);
|
||||||
|
assertEquals(5.0, product, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests multiply method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMultiply2() {
|
||||||
|
double product = math.multiply(20.0, 20.0);
|
||||||
|
assertEquals(400.0, product, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests subtract method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSubtract1() {
|
||||||
|
double difference = math.subtract(0.0, 20.0);
|
||||||
|
assertEquals(-20.0, difference, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests subtract method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSubtract2() {
|
||||||
|
double difference = math.subtract(20.0, 20.0);
|
||||||
|
assertEquals(0.0, difference, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests divide method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testDivide1() {
|
||||||
|
double division = math.divide(20, 10);
|
||||||
|
assertEquals(2.0, division, 0.00001);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests divide method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testDivide2() {
|
||||||
|
double division = math.divide(20, 0);
|
||||||
|
assertEquals(0.0, division, 0.00001);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests absolute value method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testAbsolute1() {
|
||||||
|
int abs = math.absoluteValue(1);
|
||||||
|
assertEquals(1, abs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests absolute value method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testAbsolute2() {
|
||||||
|
int abs = math.absoluteValue(-5000);
|
||||||
|
assertEquals(5000, abs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the random number generator method.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testRandomNumberBetweenTenAndTwentyButNotFifteen() {
|
||||||
|
HashSet<Integer> values = new HashSet<Integer>();
|
||||||
|
|
||||||
|
for (int i = 0; i < 10000; i++) {
|
||||||
|
int number = math.getRandomNumberBetweenTenAndTwentyButNotFifteen();
|
||||||
|
boolean lessThanTen = number < 10;
|
||||||
|
boolean greaterThanTwenty = number > 20;
|
||||||
|
boolean notFifteen = number == 15;
|
||||||
|
|
||||||
|
assertFalse(lessThanTen);
|
||||||
|
assertFalse(greaterThanTwenty);
|
||||||
|
assertFalse(notFifteen);
|
||||||
|
values.add(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(10, values.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method that converts feet to kilometres.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFootToKM1() {
|
||||||
|
double km = math.convertFeetToKilometres(1.0);
|
||||||
|
assertEquals(0.0003048, km, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method that converts feet to kilometres.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testFootToKM2() {
|
||||||
|
double km = math.convertFeetToKilometres(892.0);
|
||||||
|
assertEquals(0.272186, km, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method that returns the sum of the numbers
|
||||||
|
* between 0 and the first parameter that are divisible
|
||||||
|
* by the second parameter.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSumOfProducts() {
|
||||||
|
int sumOfProducts = math.sumOfProducts(10, 3);
|
||||||
|
assertEquals(18, sumOfProducts); // 3 + 6 + 9
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method that returns the sum of the numbers
|
||||||
|
* between 0 and the first parameter that are divisible
|
||||||
|
* by the second parameter.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSumOfProducts2() {
|
||||||
|
int sumOfProducts = math.sumOfProducts(-10, 3);
|
||||||
|
assertEquals(-18, sumOfProducts); // -3 + -6 + -9
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the method that returns the sum of the numbers
|
||||||
|
* between 0 and the first parameter that are divisible
|
||||||
|
* by the second parameter.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testSumOfProducts3() {
|
||||||
|
int sumOfProducts = math.sumOfProducts(40, 5);
|
||||||
|
assertEquals(180, sumOfProducts); // 5 + 10 + ... + 40
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Willy Wonk,o,o,h,o,o,o,o,h,w,o,o,o,o,s,h,o,h
|
||||||
|
Shari Jones,h,o,o,s,s,h,o,o,o,h,o,o,o,o
|
||||||
|
Barry Bands,h,h,w,o,o,o,w,h,o,o,h,h,o,o,w,w,w,h,o,o
|
||||||
|
Sally Slugger,o,h,h,o,o,h,h,w
|
||||||
|
Missy Lots,o,o,s,o,o,w,o,o,o
|
||||||
|
Joe Jones,o,h,o,o,o,o,h,h,o,o,o,o,w,o,o,o,h,o,h,h
|
||||||
|
Larry Loop,w,s,o,o,o,h,o,o,h,s,o,o,o,h,h
|
||||||
|
Sarah Swift,o,o,o,o,h,h,w,o,o,o
|
||||||
|
Bill Bird,h,o,h,o,h,w,o,o,o,h,s,s,h,o,o,o,o,o,o
|
||||||
|
Don Daring,o,o,h,h,o,o,h,o,h,o,o,o,o,o,o,h
|
||||||
|
Jill Jet,o,s,s,h,o,o,h,h,o,o,o,h,o,h,w,o,o,h,h,o
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Barry Bands,h,h,w,o,o,o,w,h,o,o,h,h,o,o,w,w,w,h,o,o
|
||||||
Reference in new issue
Block a user