APCSA/Code Along with verma/check.java
2026-03-09 21:55:57 -07:00

111 lines
3.9 KiB
Java
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Write a class WordCheck that is supposed to check if words that are valid. A word is considered valid if its within the max and min limit range, and does not contain a certain string.
Constructor that accepts 3 parameters, max and min length of a valid word, and a String that isnt allowed in the words.
Constructor that accepts 1 String parameter that isnt allowed in the word; min and max lengths are defaulted to 5 and 12 in this case.
Method isValid that accepts a String word and returns true if word is valid, false otherwise.
An accessor method getValidCount that returns the number of valid words checked so far.
Accessors and Mutators for max, min, String not allowed
Example of class runs:
WordCheck W1 = new WordCheck(4, 8, “$”);
W1.isValid(“Hi”); //returns false as word is too short
W1.isValid(“Hello”); //returns true as word is valid
W1.isValid(“Hibernate”); //returns false as word is too long
W1.isValid(“$Bills”); //returns false as word contains “$”
W1.isValid(“Monday”); //returns true as word is valid
W1.getValidCount(); //return 2 for two valid words so far
WordCheck W2 = new WordCheck(“Meep”); //any words with length 5-12 and no occurrence of “Meep” will be valid for W2
*/
class WordCheck {
// instance var
private int max;
private int min;
private String NA;
private int validCount; // could be set to zero here instead of line 29
// create word checker tracking var that tracks # of word checkers made
public static int wordCheckCount = 0;
// first constructor
public WordCheck(int min, int max, String NA) {
this.max = max;
this.min = min;
this.NA = NA;
// this keyword point to copy of var, used for distingugh between params
this.validCount = 0;
wordCheckCount++;
}
public WordCheck(String NA) {
// one option
// this.min = 5;
// this.max = 12;
// this.NA = NA;
// easier option
this(5, 12, NA);
}
public boolean isValid(String word) {
if (
word.length() >= min &&
word.length() <= max &&
word.indexOf(NA) == -1 /* can also use !word.contains(NA) */
) {
validCount++;
return true;
}
return false;
}
// accessors & mutators, fancy way fo saying getters & setters
public int getMax() {
return this.max;
}
public void setMax(int m) {
this.max = m;
}
public int getMin() {
return this.min;
}
public void setMin(int m) {
if (this.max > m) {
this.min = m;
}
}
public String getNA() {
return this.NA;
}
public void setNA(String no) {
this.NA = no;
}
public int getValidCount() {
return this.validCount;
}
}
public class check {
public static void main(String args[]) {
WordCheck W1 = new WordCheck(4, 8, "$");
System.out.println(W1.isValid("Hi")); //returns false as word is too short
System.out.println(W1.isValid("Hello")); //returns true as word is valid
System.out.println(W1.isValid("Hibernate")); //returns false as word is too long
System.out.println(W1.isValid("$Bills")); //returns false as word contains “$”
System.out.println(W1.isValid("Monday")); //returns true as word is valid
System.out.println(W1.getValidCount()); //return 2 for two valid words so far
WordCheck W2 = new WordCheck("Meep"); //any words with length 5-12 and no occurrence of “Meep” will be valid for W2
WordCheck W3 = new WordCheck(2, 12, "$");
System.out.println(W3.isValid("Meow"));
System.out.println(W3.isValid("$3"));
System.out.println(W3.isValid("Cats meow"));
System.out.println(W3.isValid("Dogs bark"));
System.out.println(W3.getValidCount());
WordCheck W4 = new WordCheck("meow");
System.out.println(WordCheck.wordCheckCount);
}
}