Pessoal, sou iniciante em java e se possivel queria a ajuda de vcs, é o seguinte pra fazer um trabalho da faculdade pra criptografar numeros consegui fazer ele usando somente Strings agora com vetor não estou conseguindo travei, e não consigo avançar , o problema e pegar um numero e por exemplo 123 é fazer um calculo com cada um soma + 6 e tirar o modulo % 10 , estou postando o codigo para vcs
package criptografia;
public class CriptografaNumeros {
private int numeroOculto[] = new int[4];
public CriptografaNumeros(int numeroOculto[]){
criptografa(numeroOculto);
}
private void criptografa(int numero[]) {
for (int i = 0; i < numero.length; i++) {
this.numeroOculto[i] = (numero[i] + 6) % 10;
}
}
public int[] getNumeroOculto() {
return numeroOculto;
}
public void setNumeroOculto(int numeroOculto[]) {
this.numeroOculto = numeroOculto;
}
}
package criptografia;
import java.util.Scanner;
public class TestaCripto {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(" informe um numero para criptografar ");
String numero = scan.next();
int transformaString[] = new int[numero.length()];
for (int i = 0; i < numero.length(); i++) {
transformaString[i] = Integer.parseInt(numero);
}
CriptografaNumeros cri = new CriptografaNumeros(transformaString);
System.out.println(cri.getNumeroOculto());
}
}
só uma coisa… leia nesse tópico
sobre as tags [code] pra formatar seu código… aí edite ele aí se possível…
e quanto a seu problema… bom… qual que é o problema ? hehe… gerou algum erro o seu código ? se sim… qual ?
foi mal, desculpem ai, sou iniciante no guj, porém o programa esta imprimindo o endereço de memoria, e não a soma + 6 % 10 de cada numero, por exemplo entre com o numero 123 ai (1 + 6) % 10 2 + 6 ) % 10 e imprime no caso os 3 numeros modificados
package criptografia;
public class CriptografaNumeros {
private int numeroOculto[] = new int[4];
public CriptografaNumeros(int numeroOculto[]){
criptografa(numeroOculto);
}
private void criptografa(int numero[]) {
for (int i = 0; i < numero.length; i++) {
this.numeroOculto[i] = (numero[i] + 6) % 10;
}
}
public int[] getNumeroOculto() {
return numeroOculto;
}
public void setNumeroOculto(int numeroOculto[]) {
this.numeroOculto = numeroOculto;
}
}
package criptografia;
import java.util.Scanner;
public class TestaCripto {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(" informe um numero para criptografar ");
String numero = scan.next();
int transformaString[] = new int[numero.length()];
for (int i = 0; i < numero.length(); i++) {
transformaString[i] = Integer.parseInt(numero);
}
CriptografaNumeros cri = new CriptografaNumeros(transformaString);
System.out.println(cri.getNumeroOculto());
}
}
Boa Tarde!
Pelo que eu entendi, o problema esta no for da classe TesteCripto. Faça ele assim:[code] for (int i = 0; i < numero.length(); i++) {
transformaString[i] = Integer.parseInt(numero.charAt(i));
}[/code]
Veja se da certo. Abraço!
então, não foi, ele não aceita, fala que o método parseint não é aplicavel para argumentos char
The method parseInt(String) in the type Integer is not applicable for the arguments (char)
Ahhh sim… Verdade foi distração, parseInt espera uma String, então use uma dessas duas opções: for (int i = 0; i < numero.length(); i++) {
transformaString[i] = Integer.parseInt(""+numero.charAt(i));
}
ou for (int i = 0; i < numero.length(); i++) {
transformaString[i] = Integer.parseInt(numero.substring(i, i+1));
}
Veja se resolvem.
Abraço!
foi agora funfou, valeu foi com o 1ª for mesmo ; )