Auxílio no método tabuada

Bom dia!
Não estou conseguindo printar o resultado do método Tabuada.
Não consegui identificar o erro.
Se alguém puder me ajudar, agradeço
Segue toda a classe

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] vetor = new int[10];

    int opcao;
    System.out.println("     **** Escolha uma opção ****");
    System.out.println("     1 - Calcular a média entre 3 números \n"
            + "     2 - Saber se o número é Primo\n"
            + "     3 - Saber o maior número entre 10 digitados\n"
            + "     4 - Tabuada \n"
            + "     5 - Sair do Programa");
    opcao = in.nextInt();
   
          

    switch (opcao) {
        
        case 1:
            System.out.println("MÉDIA DAS 3 NOTAS");
            int cont = 1;
            float[] nota = new float[3];

            while (cont < 3) {
                for (int i = 0; i < nota.length; i++) {
                    System.out.println("Digite a " + cont + "ª nota");
                    nota[i] = in.nextFloat();
                    cont++;

                }
                System.out.printf("A Média das notas é %.2f ", Media(nota));
            }
            break;

        case 2:
            System.out.println("NÚMERO PRIMO");
            int numero; int divisor = 0;
            System.out.println("Digite um numero candidato a nº primo");
            numero = in.nextInt();
                boolean primo = false;
                if(Primo(numero)== primo ){
            System.out.println("O número " + numero+ " não é Primo");
                }
                else{
                    System.out.println("O número " + numero+ " é Primo");
                }
            break;

        case 3:
            System.out.println("MAIOR DOS NÚMEROS");
            cont = 0;
            int[] maior = new int[10];
            for (int i = 0; i < maior.length; i++) {
                System.out.println((i + 1) + "° numero");
                maior[i] = in.nextInt();
                cont++;

                System.out.println("O maior dos números é o " + maiorNumero(maior));
            }

            break;

        case 4:
         
            System.out.println("TABUADA");
            System.out.println("Informe um numero entre 1 e 9");
            int n1 = in.nextInt();
            if(n1 <1 || n1 >9){
                System.out.println("Errado, digite um numero entre 1 e 9");
                n1 = in.nextInt();
            
            System.out.print("Resultado da Tabuada do nº "+ n1);
          
               System.out.println(Tabuada(n1));
             

    } 
             break;
        case 5:
            System.out.println("O programa foi encerrado");
            Encerra();
            break;
        default:
            break;
    }
  }  

     

    public static float Media(float[] n) {
    float soma = 0, media = 0;
    for (int i = 0; i < 3; i++) {
        soma += n[i];
        media = soma / 3;
    }
    return media;
}
public static boolean Primo(int num){

    boolean resultado = true;
    
    for(int i = 2; i < num ; ++i){
        
        
        if(num % i == 0){
            resultado = false;
        }
        
    }
    
return resultado;

}

public static int maiorNumero(int[] num) {
    int maior = 0;
    int aux;
    for (int i = 0; i < num.length; i++) {
        aux = num[i];
        if (aux > maior) {
            maior = aux;
        }

    }
    return maior;
}
     public static int [] Tabuada(int num) {
   int []  tabuada = new int[10];
        for (int i = 1; i < 10; i++) {
            tabuada[i] = (i * num);
                  
            }
  
                return tabuada;
    }

public static void Encerra() {
    System.exit(0);
}

}

1 curtida

Tente substituir por isso:

public static ArrayList Tabuada(int num)
{
ArrayList tabuada = new ArrayList<Integer>();
tabuada.clear();

for (int i = 1; i <= 10; i++)
{
tabuada.add(i * num);

}
return tabuada;

}

1 curtida

Olã Giovane, o meu método se for usado no main ele imprime, o problema é quando chamo no switch que ele não imprime nada. Possivelmente é no switch que está o erro, mas não identifiquei.
Obrigado pelo ajuda!

1 curtida

Funcionou aqui:

import java.util.Scanner;
import java.util.ArrayList;
public class main {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] vetor = new int[10];

int opcao;
System.out.println("     **** Escolha uma opção ****");
System.out.println("     1 - Calcular a média entre 3 números \n"
        + "     2 - Saber se o número é Primo\n"
        + "     3 - Saber o maior número entre 10 digitados\n"
        + "     4 - Tabuada \n"
        + "     5 - Sair do Programa");
opcao = in.nextInt();

      

switch (opcao) {
    
    case 1:
        System.out.println("MÉDIA DAS 3 NOTAS");
        int cont = 1;
        float[] nota = new float[3];

        while (cont < 3) {
            for (int i = 0; i < nota.length; i++) {
                System.out.println("Digite a " + cont + "ª nota");
                nota[i] = in.nextFloat();
                cont++;

            }
            System.out.printf("A Média das notas é %.2f ", Media(nota));
        }
        break;

    case 2:
        System.out.println("NÚMERO PRIMO");
        int numero; int divisor = 0;
        System.out.println("Digite um numero candidato a nº primo");
        numero = in.nextInt();
            boolean primo = false;
            if(Primo(numero)== primo ){
        System.out.println("O número " + numero+ " não é Primo");
            }
            else{
                System.out.println("O número " + numero+ " é Primo");
            }
        break;

    case 3:
        System.out.println("MAIOR DOS NÚMEROS");
        cont = 0;
        int[] maior = new int[10];
        for (int i = 0; i < maior.length; i++) {
            System.out.println((i + 1) + "° numero");
            maior[i] = in.nextInt();
            cont++;

            System.out.println("O maior dos números é o " + maiorNumero(maior));
        }

        break;

    case 4:
    System.out.println("TABUADA");
   System.out.println("Informe um numero entre 1 e 9");
    
    boolean tentou = false;
    while(tentou != true)
    {
    
    
            int n1 = in.nextInt();
        if(n1>0 && n1<10)
        {
           System.out.println("Resultado da Tabuada do nº "+ n1);
            System.out.println(Tabuada(n1));
            tentou = true;
        
        }
        else{
          System.out.println("Errado, entre 1 e 9");
             tentou = false;
            }
            

     }
         break;
    case 5:
        System.out.println("O programa foi encerrado");
        Encerra();
        break;
    default:
        break;
}

}

public static float Media(float[] n) {
float soma = 0, media = 0;
for (int i = 0; i < 3; i++) {
    soma += n[i];
    media = soma / 3;
}
return media;

}
public static boolean Primo(int num){

boolean resultado = true;

for(int i = 2; i < num ; ++i){
    
    
    if(num % i == 0){
        resultado = false;
    }
    
}

return resultado;
}

public static int maiorNumero(int[] num) {
int maior = 0;
int aux;
for (int i = 0; i < num.length; i++) {
aux = num[i];
if (aux > maior) {
maior = aux;
}

}
return maior;

}
public static ArrayList Tabuada(int num)
{
ArrayList tabuada = new ArrayList();
tabuada.clear();

for (int i = 1; i <= 10; i++)
{
tabuada.add(i * num);

}
return tabuada;

}

public static void Encerra() {
System.exit(0);
}
}

if(n1 <1 || n1 >9){
System.out.println(“Errado, digite um numero entre 1 e 9”);
n1 = in.nextInt();

  System.out.print("Resultado da Tabuada do nº "+ n1);
      
           System.out.println(Tabuada(n1));
         

} 

O método para exibir a tabuada ta dentro do IF, ou seja, só vai mostrar a tabuada se o número for menor que 1, ou maior que 9, você pode substituir por:

if(n1 <1 || n1 >9){
System.out.println(“Errado, digite um numero entre 1 e 9”);
n1 = in.nextInt();
System.out.print("Resultado da Tabuada do nº "+ n1);
System.out.println(Tabuada);
}else{
System.out.print("Resultado da Tabuada do nº "+ n1);
System.out.println(Tabuada);
}

1 curtida

Deu certo, obrigado Bruno!

Deu certo, mas, não informei que precisa printar
1 X numero = resultado
2 X numero = resultado
3 X numero = resultado
4 X numero = resultado
5 X numero = resultado
6 X numero = resultado
7 X numero = resultado
8 X numero = resultado
9 X numero = resultado
10 X numero = resultado
Como pode ser feito?
Obrigado pelo retorno!

1 curtida

//PRO SWITCH

case 4:
System.out.println(“TABUADA”);
System.out.println(“Informe um numero entre 1 e 9”);

    boolean tentou = false;
    while(tentou != true)
    {
    
    
            int n1 = in.nextInt();
        if(n1>0 && n1<10)           {
           System.out.println("Resultado da Tabuada do nº "+ n1);
            Tabuada(n1);
            tentou = true;
        }
        else{
          System.out.println("Errado, entre 1 e 9");
             tentou = false;
            }
            

     }
         break;

//MÉTODO DA TABUADA

public static void Tabuada(int numerador)
{
int[] a = {0,1,2,3,4,5,6,7,8,9,10};

    for(int aa =0; aa<=a.length-1; aa++)
       {

      System.out.println(a[numerador]+"x"+a[aa]+"="+a[numerador]*a[aa]);
            while(aa ==10)
            {
                System.out.println("\n");
                break;
            }
       }
    
    }

Um dos métodos é criar um for, de 1 a 10 e mostrar todas as multiplicações do número.

static void tabuada(n){

for(int i = 1; i <= 10; i++){

    System.out.println(n + " x " + i + " = " + (n * i));

}

}

1 curtida

Sim, eu havia feito assim, porém, no exercício, o System,out tem que estar fora do método, como fiz com o outros métodos, todos os prints são dentro do switch. Só com o da tabuada é que não estou conseguindo.

1 curtida

Começa a ficar mais interessante kkk,

case 4:
System.out.println(“TABUADA”);
System.out.println(“Informe um numero entre 1 e 9”);

    boolean tentou = false;
    while(tentou != true)
    {
    
    
            String n = in.next();
            int n1 = Integer.parseInt(n);
        if(n1>0 && n1<10)           {
           System.out.println("Resultado da Tabuada do nº "+ n1);
            System.out.println(Tabuada(n));
            tentou = true;
        }
        else{
          System.out.println("Errado, entre 1 e 9");
             tentou = false;
            }
            

     }
         break;

//método

public static String Tabuada(String numer)
{
String tab = “”;

        int numerador = Integer.parseInt(numer);
        for(int n = 0; n<=10; n++)
        {

tab+=(String.valueOf(numerador+“x”+n+"="+numerador*n+"\n"));
}

       return tab;
    }