Como criar um algorítimo que consiga executar o processo de multiplicação em dois números inteiros sem o uso de ' * ' ?

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;
}
}

Sim, isso mesmo

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?