Podem-me ajudar com este problema de JAVA?

Quero adicionar uma validação do n introduzido, mas não consigo colocar o programa a funcionar. O n tem de ser maior que 0 e menor ou igual a 9.

package trabalhopraticodois;
import java.util.Scanner;
public class TrabalhoPraticoDois {

public static void main(String[] args) {
System.out.print("Introduza um numero entre 1 e 9 (inclusive): ");
int n = new Scanner(System.in).nextInt();

int altura = 1;
int i = 0;
int espaços = n - 1;
if (n >0; n <= 9){

    while (altura <= n) {
  
        for (i = 1; i <= espaços; i++) {
            System.out.print("  ");
        }
  
        for (i = 1; i < altura; i++) {
            System.out.print(" "+i);
        }
  
        for (i = altura; i > 0; i--) {
            System.out.print(" "+i);
        }
  
        System.out.println();
  
    altura++;
    espaços--;
    } 
}
else {
    System.out.println("Insira um valor maior que 0 e menor ou igual a 9!");
}
}

}

nessa linha você muda para n>0&&n<=9

1 curtida

Em java, você possui dois operadores lógicos, o | e o &, respectivamente, OR e AND.
Mas, você vai vê-los, com mais frequência, duplicados, ou seja, || e &&
O que eles fazem?
Eles auxiliam o processamento de expressões lógicas, por exemplo, você pode ter uma validação assim:

if(n > 0) {

E ter outra

if(n <= 9) {

Isoladas. Se quiser juntar as duas, não pode usar ;, precisa usar um operador lógico:

if(n > 0 [OPERADOR LÓGICO] n <= 9) {

Dependendo do que você deseja, você vai usar || ou &&, a saber:
&&: operador lógico AND, ele pode ser entendido como um operador lógico pessimista, ou seja, ele valida todas as expressões lógicas antes de devolver se elas são verdadeiras (true) ou falsas (false).
||: Operador lógico OR, ele pode ser entendido como um operador lógico otimista, só verifica as expressões até que encontre uma verdadeira, para devolver verdadeiro (true) ou falso (false).

A tabela verdade de cada um é assim:

Operador AND (&&):

exp1 exp2 resultado
V      V       V
V      F       F
F      V       F
F      F       F

Operador lógico OR (||):

exp1 exp2 resultado
V      V       V
V      F       V
F      V       V
F      F       F

Assim, se você quer verificar se um número (n) é maior que zero E (AND) ao mesmo tempo, menor ou igual a 9, proceda:

if(n > 0 && n <= 9) {

Neste caso, o bloco dentro do if só será executado se o número informado satisfizer ambas as condições.
Agora, se o que você quer é um número que seja maior que zero OU (OR) menor ou igual a 9, pode usar o II:

if(n > 0 || m <=9) {

Neste caso, qualquer número digitado será válido, pois, se a primeira condição não é satisfeita (o n informado é menor que zero), a segunda será (qualquer n , 0 é um n <= 9). Do contrário, qualquer valor acima de zero, mesmo maior que 9, permitirá o acesso ao bloco.
Ficou claro?

1 curtida