Types of Rational Operators
All operators give a true
or False
value
Operators SHOULD NOT be used on String . String comparisons should be done using .equal or .compareTo
Select two numbers and check their relation:
public class Test {
public static void main(){
String a = "Hello";
String b = new String("Hello");
System.out.println( a == b);
}
}
Test.main()
false
We all know how if and else statements work
We all know how if and else statements work
if (condition) { // Code to execute if the condition is true } else { // Code to execute if the condition is false }
if (condition1) { // Code to be executed if condition1 is true } else if (condition2) { // Code to be executed if condition2 is true } else if (condition3) { // Code to be executed if condition3 is true } else { // Code to be executed if none of the conditions are true }
</html>
&&
and ||
.Nested if-else statements allow for multiple levels of decision-making within a program.
public class Nested {
public static void main() {
int x = 5;
int y = -10;
if (x > 0) {
if (y > 0) {
System.out.println("Both x and y are positive.");
} else {
System.out.println("x is positive, but y is not.");
}
} else {
System.out.println("x is not positive.");
}
}
}
Nested.main()
x is positive, but y is not.
Compound boolean expressions involve using logical operators like && (and)
and || (or)
to combine multiple conditions.
public class Compound {
public static void main(){
int age = 25;
boolean isStudent = true;
if (age >= 18 && isStudent) {
System.out.println("You are an adult student.");
} else if (age >= 18 || isStudent) {
System.out.println("You are either an adult or a student.");
} else {
System.out.println("You are neither an adult nor a student.");
}
}
}
Compound.main()
You are an adult student.
Short-circuited evaluation is an optimization technique where the second condition in a compound expression is only evaluated if the first condition is true (for &&) or false (for ||).
public class Short {
public static void main() {
boolean condition1 = true;
boolean condition2 = false;
if (condition1 || condition2) {
System.out.println("This will be printed.");
}
}
}
Short.main()
This will be printed.
Calculate the final grade based on the following criteria:
import java.util.Scanner;
public class GradeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your midterm score (0-100): ");
int midtermScore = scanner.nextInt();
System.out.print("Enter your final exam score (0-100): ");
int finalExamScore = scanner.nextInt();
System.out.print("Did you complete the homework (yes/no): ");
String homeworkComplete = scanner.next().toLowerCase();
double grade = calculateFinalGrade(midtermScore, finalExamScore, homeworkComplete);
System.out.println("Your final grade is: " + grade);
scanner.close();
}
public static double calculateFinalGrade(int midtermScore, int finalExamScore, String homeworkComplete) {
if (midtermScore < 0 || midtermScore > 100 || finalExamScore < 0 || finalExamScore > 100) {
System.out.println("Invalid input for scores. Scores should be between 0 and 100.");
return -1;
}
double homeworkWeight = homeworkComplete.equals("yes") ? 0.2 : 0.0;
double finalGrade = (midtermScore * 0.4) + (finalExamScore * 0.4) + (homeworkWeight * 100);
return finalGrade;
}
}
GradeCalculator.main(null)
Enter your midterm score (0-100): Enter your final exam score (0-100): Did you complete the homework (yes/no): Your final grade is: 94.80000000000001
De Morgan’s Law
De Morgan's Law provides a set of rules for negating complex boolean expressions.
Example:
Using &&
operators:
Using ||
operator:
public class Example {
public static void main(){
boolean x = true;
boolean y = false;
// Original expression
boolean originalExp = !(x && y);
// Applying De Morgan's Law
boolean equivalentExp = !x || !y;
// Checking if the results are equivalent
System.out.println("Are the expressions equivalent? " + (originalExp == equivalentExp));
}
}
Example.main()
Are the expressions equivalent? true
public class Example2 {
public static void main(){
boolean p = true;
boolean q = true;
// Original expression
boolean originalExp2 = !(p || q);
// Applying De Morgan's Law
boolean equivalentExp2 = !p && !q;
// Checking if the results are equivalent
System.out.println("Are the expressions equivalent? " + (originalExp2 == equivalentExp2));
}
}
Example2.main()
Are the expressions equivalent? true
public class Example3 {
public static void main(){
boolean a = true;
boolean b = false;
boolean c = true;
// Original expression
boolean originalExp3 = !(a && b) || (c || !b);
// Applying De Morgan's Law
boolean equivalentExp3 = (!a || !b) || (c || b);
// Checking if the results are equivalent
System.out.println("Are the expressions equivalent? " + (originalExp3 == equivalentExp3));
}
}
Example3.main()
Are the expressions equivalent? true
Negate the following expressions:
1. !(A || B)
2. !(A || B && C)
3. !(A && (B || C))
(!A && !B)
(!A && (!B | !C)) |
(!A | (!B && !C)) |
An if statement using == to compare myHouse and momsHouse will be true but false for myHouse and annasHouse because the objects are not the same even though they have same parameters. This means that == will only return true if it is the same object, not a reference or copy of that object.
String a = "Hello";
String b = "Hello";
String c = a;
String d = new String("Hello");
System.out.println(a == c);
System.out.println(d == b);
System.out.println(a == b);
System.out.println(a == d);
true
false
true
false
When you want to compare objects you can use the .equal() method, it will return true if the objects have the same attributes even if they aren’t identical.
String a = "Hello";
String b = "Hello";
String c = a;
String d = new String("Hello");
System.out.println(a.equals(c));
System.out.println(d.equals(b));
System.out.println(a.equals(b));
System.out.println(a.equals(d));
true
true
true
true
Create a program that validates a user’s password based on the following criteria:
Write a Java program that prompts the user to enter a password and then checks if it meets the above criteria. If the password meets all the criteria, print “Password is valid.” If not, print a message indicating which criteria the password fails to meet.
import java.util.Scanner;
import java.util.regex.*;
public class PasswordChecker {
public static void main(String[] args) {
Scanner inputScanner = new Scanner(System.in);
System.out.print("Provide your desired password: ");
String userInput = inputScanner.nextLine();
System.out.println("You entered: " + userInput);
if (meetsPasswordCriteria(userInput)) {
System.out.println("Your password is acceptable.");
} else {
System.out.println("Your password does not meet the required criteria.");
}
inputScanner.close();
}
public static boolean meetsPasswordCriteria(String userInput) {
if (userInput.length() < 8) {
System.out.println("Ensure your password has at least 8 characters.");
return false;
}
if (!Pattern.compile("[A-Z]").matcher(userInput).find()) {
System.out.println("Your password should include at least one capital letter.");
return false;
}
if (!Pattern.compile("[a-z]").matcher(userInput).find()) {
System.out.println("Your password should have at least one small letter.");
return false;
}
if (!Pattern.compile("[0-9]").matcher(userInput).find()) {
System.out.println("Ensure your password has a number (0-9).");
return false;
}
if (!Pattern.compile("[!@#$%^&*]").matcher(userInput).find()) {
System.out.println("Your password should contain one of these special characters: (!, @, #, $, %, ^, &, *).");
return false;
}
return true;
}
}
PasswordChecker.main(null);
Provide your desired password: You entered: fasfhasjfhksWAJKSFHJKs2131@
Your password is acceptable.
import java.security.SecureRandom;
public class RandomStringGenerator {
public static void main(String[] args) {
int stringLength = 12;
String randomString = generateRandomString(stringLength);
System.out.println("Generated Random String: " + randomString);
}
public static String generateRandomString(int length) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*";
SecureRandom random = new SecureRandom();
StringBuilder randomStr = new StringBuilder();
for (int i = 0; i < length; i++) {
randomStr.append(characters.charAt(random.nextInt(characters.length())));
}
char[] randomArray = randomStr.toString().toCharArray();
for (int i = randomArray.length - 1; i > 0; i--) {
int index = random.nextInt(i + 1);
char temp = randomArray[index];
randomArray[index] = randomArray[i];
randomArray[i] = temp;
}
return new String(randomArray);
}
}
RandomStringGenerator.main(null);
Generated Random String: K*m!^&XZ3w*O