[RESOLVIDO] Ajuda com exercicio de logica de programação

preciso de uma ajuda com um exercicio de logica de programação pois nao tenho a minima ideia de como fazer alguem me ajuda?

exercicio

Um truque bem conhecido para descobrir se um inteiro N é um múltiplo de nove é computar a soma S dos seus dígitos. Se S é um múltiplo de nove, então N também é.
Se o número de algarismos da soma é 2, por exemplo, dizemos que o grau-9 é 2. Se o número de algarismos da soma é 3, dizemos que o grau-9 é 3. E assim por diante.
Escreva um programa que, dado um inteiro positivo N, determinar se ele é um múltiplo de nove e, caso ele seja, qual o seu grau-9.
A entrada de dados consiste em vários testes e, em cada teste um número inteiro positivo deve ser lido. O programa encerra-se quando este número for zero.
A saída do programa deve indicar, para cada número da entrada, se ele é um múltiplo de nove e, caso ele seja, o seu grau-9.
Veja alguns exemplos:
Entrada: 99999
Cálculo a ser feito pelo programa: 9+9+9+9+9 = 45
Saída: 99999 é múltiplo de 9 e seu grau-9 é 2.
Entrada: 999999999999
Cálculo a ser feito pelo programa: 9+9+9+9+9+9+9+9+9+9+9+9 = 108
Saída: 999999999999 é múltiplo de 9 e seu grau-9 é 3.
Entrada: 45
Cálculo a ser feito pelo programa: 4+5 = 9
Saída: 45 é múltiplo de 9 e seu grau-9 é 1.
Entrada: 998
Cálculo a ser feito pelo programa: 9+9+8 = 26
Saída: 998 não é múltiplo de 9
Entrada:
0

Olha, tenho certeza que você sabe por onde começar, talvez, não se sinta segura.
Mas, lembre-se, o processo de aprendizado contempla errar e acertar. E isso é fundamental. Você não começou a andar e saiu correndo. Certamente tropeçou, caiu, levantou e foi, passo a passo, se equilibrando até conseguir correr.
Isso não significa que não voltou a cair, apenas que as quedas se tornaram menos frequentes.

Sobre o algoritmo:
1 - Organize todas as informações que precisa, defina se são variáveis a serem utilizadas ou não.
2 - Ordene os passos que precisa seguir para resolver cada uma das questões propostas
3 - Monte o algoritmo e faça o famosos teste de mesa: verifique “na mão” se faz sentido o que você escreveu.

comecei ja so que agora não sei como faço pra definir o grau?

package exercicios;

import java.util.Scanner;

public class Avaliacao {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	        System.out.println("Informe um número: ");
	        int num = new Scanner(System.in).nextInt();
	        int soma = 0;

	        while(num>0) {
	            soma += (num % 10);
	            num /= 10;
	            System.out.println("O valor de soma é: " + soma);
	        }
	        System.out.println();
	        System.out.println("A soma dos algarismos é: " + soma);

	    }
	}</code>

O código que apresentou no tópico Ajuda com exercicio de algoritmo? estava quase lá.
Seguindo a orientação do @darlan_machado, releia o exercício e segue os passos do seu código.
Falta pouco.

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;

        while(num>0) {
            soma += (num % 10);
            num /= 10;
        }
        System.out.println();
        System.out.println("A soma dos algarismos é: " + soma);
 if(soma == 9) {
    	System.out.println(" O Número é múltiplo de 9");
   }else {
	   System.out.println("O número não é múltiplo de 9");
   }
 String s = Integer.toString(num);
 System.out.println("o grau 9 é " +s.length());

if(num == 0) {
System.out.println(“Programa Encerrado”);
}
ok vou tentar denovo

Uma dica está neste trecho do exercício:

Como você faria para saber quantos dígitos existem em um valor informado pelo usuário? Por exemplo, quantos dígitos existem nos números abaixo:

  • 5
  • 200
  • 3
  • 932543554656
  • 45
  • 153

Pense um pouco sobre como implementar isso em java.

mas eu ja fiz o grau falta encerrar falta a saida na verdade

e o encerrar que nao sei se pode fazer so fazendo esse if ai

Ola amigo sera que agora esta certo?

package exercicios;

import java.util.Scanner;

public class Avaliacao {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	        System.out.println("Informe um número: ");
	        int num = new Scanner(System.in).nextInt();
	        int soma = 0;

	        if(num == 0) {
	    		System.exit(num);
	        }
	        System.out.println("a saída é "+num);
	        while(num>0) {
	            soma += (num % 10);
	            num /= 10;
	        }
	        System.out.println();
	        System.out.println("A soma dos algarismos é: " + soma);
     if(soma == 9) {
	    	System.out.println(" O Número é múltiplo de 9");
	   }else {
		   System.out.println("O número não é múltiplo de 9");
	   }
     String s = Integer.toString(num);
     System.out.println("o grau 9 é " +s.length());

}
}

ta certo agora?

package exercicios;

import java.util.Scanner;

public class Avaliacao {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	        System.out.println("Informe um número: ");
	        int num = new Scanner(System.in).nextInt();
	        int soma = 0;

	        if(num == 0) {
	    		System.exit(num);
	        }
	        System.out.println("a saída é "+num);
	        while(num>0) {
	            soma += (num % 10);
	            num /= 10;
	        }
	        System.out.println();
	        System.out.println("A soma dos algarismos é: " + soma);
     if(soma == 9) {
	    	System.out.println(" O Número é múltiplo de 9");
	   }else {
		   System.out.println("O número não é múltiplo de 9");
	   }
     String s = Integer.toString(num);
     System.out.println("o grau 9 é " +s.length());

}
}

Fui testar agora estou com um probleminha nesta parte mas nao sei como fazer quando a soma dos algarismos da 9 ele fala q é multiplo de nove só que não são todos por exemplo se a soma dos algarismos da 45 ele ja fala que não é multiplo de nove mais é quando é dois numeros ele nao esta somando ai nao esta dando certo o if o que posso fazer nao tenho ideia ja pensei e pensei e nao sei como fazer é essa parte aqui sei q ta errado o if mas nao sei o que coloco

if(soma == 9) {
System.out.println(" O Número não é múltiplo de 9");
}else {
System.out.println(“O número é múltiplo de 9”);
}if(soma == 9) {
String s = Integer.toString(soma);
System.out.println("o grau 9 é " +s.length());
} else {
System.out.println(“Este número não possui grau pois não é um múltiplo de 9”);
}

Assim, vou lhe ajudar a pensar na solução.
Um número que é múltiplo de 9 quando multiplicado por 1, 2, 3, 4, …, resulta 9, 18, 27, 36, … e não deixa resto quando da divisão por 9.
O seu if que verifica se é múltiplo de 9 precisa ser alterado para que a igualdade sinalize que é um número que atenda a condição.

Não precisa disto aqui.

fiz uma alteração no código acredito que agora foi da uma olhada pra ver se ta certo?

package exercicios;

import java.util.Scanner;

public class Avaliacao {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	        System.out.println("Informe um número: ");
	        int num = new Scanner(System.in).nextInt();
	        int soma = 0;

	        if(num == 0) {
	    		System.exit(num);
	        }
	        System.out.println("a saída é "+num);
	        while(num>0) {
	            soma += (num % 10);
	            num /= 10;
	        }
	        System.out.println("A soma dos algarismos é: " + soma);
	        num = soma%9;
	        System.out.println("o número deu "+num);
	        if(num == 0) {
		    	System.out.println("O número é múltiplo de 9");
		   }else {
			   System.out.println("O número não é múltiplo de 9");
		   }if(num == 0) {
			   String s = Integer.toString(soma);
		        System.out.println("o grau 9 é " +s.length());
		   }else {
            System.out.println("o número não possui grau pois não é multiplo de 9");
		   }
}

}

outro problema quando faço teste com esse número estora a string
e da erro o resto agora da certo.

Informe um número:
999999999999
Exception in thread “main” java.util.InputMismatchException: For input string: “999999999999”
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at exercicios.Avaliacao.main(Avaliacao.java:10)

troquei pra long ai deu certo

Acertou a questão do if, mas poderia escrever assim: if((soma % 9) ==0) {
Vou colocar a minha abordagem para você comparar. Há s.m.j. outras formas de fazer, mas esta funciona bem.

public class Avaliacao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Informe um número: ");
        int num = new Scanner(System.in).nextInt();
        int soma = 0;

        while (num > 0) {
            soma += (num % 10);
            num /= 10;
        }
        System.out.println("A soma dos algarismos é: " + soma);
        if ((soma % 9) == 0) {
            String s = Integer.toString(soma);
            System.out.println("O Número é múltiplo de 9 e o seu grau 9 é " + s.length());
        } else {
            System.out.println("O número não é múltiplo de 9");
        }
    }
}

Com relação ao estouro é que está utilizando int para a variável que é limitada em relação a long ou double.
Mude e faça os teste para ver.

obrigada pela ajuda eu mudei deu certo :slight_smile:

Disponha.
Se atendeu a sua dúvida, edite o tópico colocando [RESOLVIDO] na frente de seu texto.