Tentei tentei, mas não consegui

Galera eu tentei mas realmente não consegui, não consegui fazer com que o meu programa pegasse os numeros automaticamente, vou explicar melhor :

eu criei um programa que pega um numero inteiro eleva esse numero a ele mesmo, depois soma os caracteres, pega o resultado a soma e divide pelo primeiro numero onde foi dada a entrada.

Fazendo a entrada manualmente eu consigo o resultado Ex 2 eleva a 2=4, como o numero 4 é um caracter só ele não soma nada mas é dividido pelo primeiro numero ou seja o “2” , outro exemplo 3 = 3 elevado a 3 = 27 " agora temos dois caracter então eles são somados" 2+7=9 , 9 dividido pelo primeiro numero ou seja 3 vai resultar = 9/3 = 3 ou seja o numero é igual a ele mesmo.
Só que eu gostaria de automatizar essas entradas, ai inves de ficar digitando numero por numero que quero fazer com que o meu programa de essa entrada automaticamente , tentei com for mas não consegui , se alguém puder alterar o meu programa fazendo dar certo eu ficaria muito agradecido.

Vou por o meu programa para vocês verem, e se alguém puder editar o codigo eu ficarei contente.

import javax.swing.JOptionPane;
public class Eleva{

public static void main( String args[])
{
String novo,entrada,output;
int n1=0,n2=0,n3=0,n4=0,total=0;
double r;

//essa parte não está funcionando 
//foi onde eu tentei fazer as entradas 
for(int a=1;a<100;a++){
 
n1=a;

//aqui estou usando a função da classe Math para elevar os numeros
r=Math.pow(n1,n1);
n3=(int)r;

novo=String.valueOf(n3);

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

n2+=Integer.parseInt(novo.charAt(i)+"");
}


n4+=n2/n1;

//criei essa condição para me mostrar os resultado , não sei se está correto .
if(n4==n1)
total = total + n4;


output="valor : "+total;

System.out.println(total);

}

System.exit(0);



}
}

[size=“11”]
[color=“red”]

  • Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados (caso vc tenha identado!) e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:

, mas cara…a partir do 5 já não dá certo!

por exemplo: 3125

a soma deles já da 11 com a divisão pelo primeiro número que é 5 já não dá
o número de inicio…

4 mesma coisa…

256 = 13 / 4 = 3 que não é o número de inicio…

é isso mesmo que você tá tentando fazer!?..

e cara acho que existem algumas coisas dentro do seu codigo que podem ser melhoradas.

Por exemplo aqui quando soma a varíavel n2, ela ta somando os valores que já existem dentro da varialvél.

    for(int i=0; i < novo.length();i++){
       	
       n2 = n2 + Integer.parseInt(novo.charAt(i)+"");

   }

Exemplo tem la o 3:

27 = 9, ai da proxima vez em que ele entrar no for com o 4, essa variavel n2, já irá conter o valor 9, e somará os valores do 4, que é 256 em cima desse valor 9, sendo que ela deveria estar zerada para armazenar somente o 2+5+6…

n2 = 0;

    for(int i=0; i < novo.length();i++){
       	
       n2 = n2 + Integer.parseInt(novo.charAt(i)+"");

   }

Da uma olhada ai…posta direitinho sua dúvida blz!?..

Abraço!

e ai blz… dá uma olhada ve se era o q vc precisava…
se te ajudar…

public class Eleva {
	public static void main(String args[]) {
		String elevado = "";
		int primeiro = 0, segundo = 0, soma = 0;
		long rr = 0;
		for (int a = 1; a < 100; a++) {
			System.out.println(" gerado =" + a + " ");
			rr = (long) Math.pow(a, a);
			elevado = String.valueOf(rr);
			if (elevado.length() >= 2) {
				primeiro = Integer.parseInt(elevado.substring(0, 1));
				segundo = Integer.parseInt(elevado.substring(1, 2));
				soma = primeiro + segundo;
				System.out.print(" primeiro =" + primeiro + " ");
				System.out.println(" segundo =" + segundo + " ");
			} else {
				soma = (int) rr;
			}
			System.out.println(" RR "+rr);
			if ((soma / a) == a) {
				System.out.print(" SOMA de 1º e 2º =" + soma + " ");
				System.out.println(" IGUAL ");
			}
			else{
				System.out.print(" SOMA de 1º e 2º =" + soma + " ");
				System.out.println(" NÃO É IGUAL !!!");
			}
		}
		System.exit(0);
	}
}

falou…