Foi me proposto um exercício no qual eu tenho que criar um algorítimo que consiga multiplicar um número n1’ e outro n2’ sem usar * mas usando repetição.
o comando ‘for (int i = 1; i <= n; i++)’ só adiciona um a mais cada vez que é dado algum comando até chegar ao n comando pre-definido, então não seria útil, certo?
Multiplicação, nada mais é, que uma série de adições, certo?
Basicamente, a expressão “vezes” faz muito sentido.
10 * 10 (dez vezes dez) = 100 (10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 + 10 = 100)
Entendeu?
1 curtida
Então, indo por essa lógica, se colocar ‘n2’ como um número de vezes que ‘n1’ vai ser somado, e ‘n1’ com o valor do número que virá a ser somado, é a mesma coisa que fazer ‘n2’ vezes ‘n1’?
nesse caso, o seguinte código funcionaria?
public int multiplique(int n1, int n2){
for (int i=1;i<=n2;i++){
int resultado = n1;
resultado = (n1+n1);
return resultado;
}
}
aproveitando o tópico, por que ta dando esse erro?
O método foi declarado assim
public int multiplique(int n1, int n2) {
Veja que o que o método precisa fazer, independente do que esteja dentro dele, é devolver um valor inteiro.
Você tem esta linha, dentro do for:
return resultado;
Porém, caso o for não seja executado, o que é devolvido?
Pode, apenas, colocar:
return 0;
Agora que eu entendi. Até então o ‘resultado’ não tinha um valor pré-definido, nem mesmo ‘0’.
O que fiz pra resolver foi colocar ‘int resultado = 0’ e no lugar de (n1+n1); colocar (resultado+n1);
O que acontece, você tem 3 tipos de métodos no java: construtores, métodos vazios e métodos que retornam algo.
Os construtores são necessários para construir os objetos de uma determinada classe
public class Foo {
public Foo(){}
}
Eles não possuem nenhuma indicação de tipo de retorno e tem o mesmo nome da classe.
Temos os métodos que não retornam nada, ou seja, os void
public void ola(){
//Alguma coisa aqui
}
Estes métodos nunca terão um return ou terão um return como abaixo
public void ola(){
//Alguma coisa aqui
return; //sem informar nada no return, ou seja, retorna vazio
}
Por fim, temos os métodos que retornam algo. Que algo é esse? Depende do que você informa que o método devolve
public int soma(int n1, int n2) {
//alguma coisa aqui
return 0;
}
public String criaMsg(String info) {
//alguma coisa aqui
if(null != info) {
return "A mensagem é: " + info;
}
return null;//Retorna null pois null é diferente de vazio e um objeto pode suportar null. Nunca verá isso num método que devolve primitivos
}
E assim por diante.
Ficou mais claro?