Seguem mais detalhes do desafio, a resposta que foi dada e como poderia ter sido resolvida essa atividade:
Dados dois numeros inteiros A e B, crie um terceiro inteiro C seguindo as seguintes regras:
O primeiro número de C é o primeiro número de A;
O segundo número de C é o primeiro número de B;
O terceiro número de C é o segundo número de A;
O quarto número de C é o segundo número de B;
Assim sucessivamente…
Caso os números de A ou B sejam de tamanhos diferentes, completar C com o restante dos números do inteiro maior. Ex: A = 10256, B = 512, C deve ser 15012256.
Caso C seja maior que 1.000.000, retornar -1
Desenvolva um algoritmo que atenda a todos os requisitos acima.
Código Proposto como Resposta:
public class ManipulacaoNumerica {
public static void GerarC(String a, String b) {
if (a != null && b != null) {
StringBuilder c = new StringBuilder();
System.out.println("Valores de Entrada: " + a + " - " + b);
int i = 0;
int j = 0;
loop: for (; i <= a.length();) {
System.out.println(i);
int proxi = i + 1;
if (proxi <= a.length()) {
c.append(a.substring(i, proxi)).toString();
}
i++;
for (; j <= b.length();) {
System.out.println(j);
int proxj = j + 1;
if (proxj <= b.length()) {
c.append(b.substring(j, proxj)).toString();
}
j++;
continue loop;
}
}
try{
int valor = Integer.valueOf(c.toString());
if (valor < 1000000) {
System.out.println("Valor de Saída: " + c);
} else {
valor = -1;
System.out.println("Número maior que 1.000.000:" + valor);
}
}catch (Exception e) {
// TODO: handle exception
int valor = -1;
System.out.println("Ocorreu um erro na aplicação: "+ e +" o valor de c é: "+valor);
}
}
}
public static void Executa(String a, String b) {
if(a.length() > b.length()){
GerarC(a,b);
}else{
GerarC(b,a);
}
}
public static void main(String[] args) {
Executa("24", "1999");
}
}
Queria saber se esse código está muito ruim.