O operador lógico && é uma adição; lê-se como "condição 1 E condição 2: se verdadeiras, faça." . No caso, as duas ou mais condições têm de ser verdadeiras para que a condição seja satisfeita.
Já o operador || é uma condicional, no sentido de que "OU condição 1 é verdadeira OU condição 2 é verdadeira" . Neste caso, apenas uma das condições tem de ser verdadeira para satisfazer a condição.
Aqui, fiz algumas formas alternativas de escrever o seu codigo, coda e que nem matimatica, voce tem varias formas para chegar num mesmo resultado.
Early return
package test;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Digite o dia da semana em letras minusculas: ");
String dia = scanner.nextLine();
if (dia.equals("sabado") || dia.equals("domingo")) {
System.out.println(dia + " não é um dia útil");
return;
}
System.out.println(dia +" é um dia útil");
scanner.close();
}
}
Switch Case
package test;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Digite o dia da semana em letras minusculas: ");
String dia = scanner.nextLine();
switch (dia) {
case "segunda":
case "terca":
case "quarta":
case "quinta":
case "sexta":
System.out.printf("%s e um dia util%n", dia);
break;
default:
System.out.printf("%s nao e um dia util%n", dia);
}
scanner.close();
}
}
Voce pode garantir que a letra seja minuscula pondo no scanner apos a chamado do metodo .nextLine() um .toLowerCase(), assim:
String dia = scanner.nextLine().toLowerCase();