2
respostas

Eu estou conseguindo resolver esse exercicio de forma nenhuma, alguém poderia me ajudar, sou iniciante;

Escreva um programa que lê um número e mostra a soma dos seus dígitos, cada um múltiplicado por um peso, da seguinte forma:

Se o número tem 4 dígitos, o primeiro dígito deve ser multiplicado por 4, o segundo por 3, o terceiro por 2 e assim por diante. Se o número tem 10 dígitos, o primeiro dígito deve ser multiplicado por 10, o segundo por 9, o terceiro por 8 e assim por diante.

Exemplos:

Número: 123
Resultado: 10
Explicação: 1x3 + 2x2 + 3x1 = 10
Número: 2017
Resultado: 17
Explicação: 2x4 + 0x3 + 1x2 + 7x1= 17

MEU CODIGO ABAIXO

public class SomaII {
    public static void main(String[] args) {
       Scanner console = new Scanner (System.in);

       String num;
       int tamanho,soma= 0,av = 0;


        //ENTRADA
        System.out.print("Digite: ");
        num = console.next();

        //PROCESSAMENTO
        for (int j = num.length(); j >= 1; j--){

            av =  j;

        }
         for (int i = 0; i < num.length(); i++) {

        String d = num.substring(i,i+1);

        int di = Integer.parseInt(d);

        soma = soma + di;
        }
        System.out.println(soma);
    }

}
2 respostas

Eu fiz um código aqui, se vc rodar vai aparecer exatamente o que vc mostrou como exemplo. Qualquer duvida

 public static void main(String[] args) {
         System.out.print("Digite: ");

         //ENTRADA
         Scanner console = new Scanner (System.in);
         String numero = console.next();
         String reverso = new StringBuilder(numero).reverse().toString();
         int resultado = 0;
         String explicacao = "";

         //PROCESSAMENTO
         for(int i = reverso.length(); i >= 1; i--)
         {
             int individual = Character.getNumericValue(reverso.charAt(i-1));
             resultado += individual * i;

             if(i != 1)
             {
                 explicacao += individual + "x" + i + " + ";
             }
             else
             {
                 explicacao += individual + "x" + i + " = " + resultado;
             }

         }

         console.close();

         //SAIDA
         System.out.println("Numero: " + numero);
         System.out.println("Resultado: " + resultado);
         System.out.println("Explicacao: " + explicacao);
    }

outra forma mais reduzida pensando no decrementador

public static void main(String[] args) {

         //ENTRADA
         System.out.print("Digite: ");
         Scanner console = new Scanner (System.in);
         String numero = console.next();
         int resultado = 0;
         int contador = numero.length();               

         //PROCESSAMENTO
         for(int i = 0; i < numero.length(); i++)
         {
             resultado += Character.getNumericValue(numero.charAt(i)) * contador--;
         }

         console.close();

         //SAIDA
         System.out.println("Resultado: " + resultado);
    }