Tabuada em Java

3 respostas
java
W

Ola pessoal sou novo por aqui e em programação Java.
Estou a tentar resolver esse exercicio:

Escreva um programa em JAVA que pede um numero N>0 e um operador
aritmético (+,-,/,*) e, com base nesses dados, apresenta a tabuada de 1 a 9 para N.
Exemplo:
Entrada:
N=2
Operação: *
Saída:
2 * 1=2
2 * 2=4
2 * 3=6
2 * 4=8
2 * 5=10
2 * 6=12
2 * 7=14
2 * 8=16
2 * 9=18

tentei isto mas não funciona:

package exercicios;
import java.util.Scanner;
//import java.util.Doc;
/**
 *
 * @author Alexandro.Almeida
 */

public class Tabuada {
    public void tabuada(int n, String op){
        if(op.equals('+')){
            for(int cont=1; cont<=9 ; cont++){
                System.out.println("Tabuada\n" + (n+cont));
            }
        }
        else
            if(op.equals('-')){
            for(int cont=1; cont<=9 ; cont++){
                System.out.println("Tabuada\n" + (n - cont));
            }
        }
        else
            if(op.equals('/')){
            for(int cont=1; cont<=9 ; cont++){
                System.out.println("Tabuada\n" + (n/cont));
            }
        }
        else
            if(op.equals('*')){
            for(int cont=1; cont<=9 ; cont++){
                System.out.println("Tabuada\n" + (n*cont));
            }
        }
            else{
                System.out.println("operador errado");
            }
    }
      
    /**
     *
     * @param args
     */
    public static void main(String [] args){
        Scanner s = new Scanner(System.in);
        System.out.print("Introduza um Numero >0\n");
        int n = s.nextInt();
        System.out.print("Introduza um operador\n");
        String op = s.next();
        Tabuada tab= new Tabuada();
        tab.tabuada(n,op);
          }
    }

3 Respostas

titoncio

Utilize aspas duplas em
if(op.equals(" operador ")

E você disse que está aprendendo, o código dá pra melhorar se você diminuir a repetição de códigos.
Como pode ver, o if e o for se repetem 4 vezes. Há maneiras para trocar por algo mais limpo e direto, eu pessoalmente colocaria um Switch Case.

public void tabuada(int n, String op){
		for(int cont=1; cont<=9 ; cont++){
			switch (op) {
			case "-":
				System.out.println("Tabuada\n" + (n - cont));
				break;

			case "+":
				System.out.println("Tabuada\n" + (n - cont));
				break;

			case "/":
				System.out.println("Tabuada\n" + (n / cont));
				break;
			case "*":
				System.out.println("Tabuada\n" + (n * cont));
				break;
			default:
				break;
			}
		}
	}
peczenyj

ola

um dos problemas do switch-case é que ele só suporta Strings a partir da versão 7 do java. cuidado.

outra coisa é que apos os statements vc precisa colocar um break, caso contrario ele vai continuar “caindo” em outros cases ate achar um break. pouca gente se lembra disso pq switch/case é uma estrutura de controle bem incomum ( e em muitos casos vc pode substituir por if / else ou Orientação a Objetos + polimorfismo , pattern strategy, etc )

W

Olá Titoncio!

Mto obrigado a solução funcionou excelentemente.
contudo apenas imprimia o resultado, por isso alterei o código para que imprima: qual o tipo de tabuada pedido pelo utilizador, o numero, o operador e o resultado. eis o código alterado:

public class Tabuada {

/**

public void tipo_tabuada(String op){

if (op.equals("-")){

System.out.println(Tabua de Subtração);

}

else

if (op.equals ("+")){

System.out.println(Tabua de Adição);

}

else

if (op.equals ("/")){

System.out.println(Tabua de Divisão);

}

else

if (op.equals ("*")){

System.out.println(Tabua de Multiplicação);

}

else{

System.out.println(operador errado);

}

}

<em>/

public void tipo_tabuada(String op){

switch (op) {

case -:

System.out.println(Tabua de Subtração);

break;

case +:

System.out.println(Tabua de Adição);

break;

case /:

System.out.println(Tabua de Divisão);

break;

case "</em>":

System.out.println(Tabua de Multiplicação);

break;

default:

System.out.println(operador errado);

break;

}

}

public void tabuada(int n, String op){

for(int cont=1; cont<=9 ; cont++){

switch (op) {

case -:

System.out.println(n + - + cont + = + (n - cont));

break;
case "+":
		System.out.println(n + "+" + cont + "=" + (n + cont));
		break;

	case "/":
		System.out.println(n + "/" + cont + "=" + (n / cont));
		break;
	case "*":
		System.out.println(n + "*" + cont + "=" + (n * cont));
		break;
	default:
		break;
	}
}
}

public static void main(String [] args){

Scanner s = new Scanner(<a href="http://System.in">System.in</a>);

System.out.print(Introduza um Numero >0\n);

int n = s.nextInt();

System.out.print(Introduza um operador\n);

String op = s.next();

<a href="//System.out.print">//System.out.print</a>(“Tabuada de " + op +”\n");

Tabuada tab= new Tabuada();

tab.tipo_tabuada(op);

tab.tabuada(n,op);
}

}

Criado 30 de outubro de 2016
Ultima resposta 31 de out. de 2016
Respostas 3
Participantes 3