[ Foro de retos de programación ]
Hola estoy realizando el ejercicio 106 de la pagina acepta el reto, el de codigos de barras, cuando ejecuto mi codigo y meto varios ejemplos me sale lo que me deberia de salir, pero cuando envio mi codigo el juez me dice Wrong answer, y la verdad no se donde esta el error, tampoco me dice el juez donde esta enseño mi codigo haber si alguien me puede ayudar a verlo, gracias.
CODIGO:
public class Main {
static ArrayList<Character> Lista=new ArrayList();
static String Codigo;
static Scanner sc=new Scanner(System.in);
static int contador;
static int par=0;
static int impar=0;
static int numero;
static String[][] pais ={{"0","EEUU"},{"380","Bulgaria"},{"50","Inglaterra"},{"539","Irlanda"},{"560","Portugal"},
{"70","Noruega"},{"759","Venezuela"},{"850","Cuba"},{"890","India"}};
static String aux;
//long Codigo;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Introduzca Numero");//Introduzco numero
Codigo=sc.nextLine();
if(Codigo.equals("0")){
}
else{
EAN(Codigo);//Aqui llamo al metodo que introduce los numero a la lista
Comprobar(Lista,Codigo);//Aqui llamo al metodo que comprueba los multiplos del numero
}
}
///////////////////////////////////////////////////////
public ArrayList getLista() {
return Lista;
}
/*Este metodo comprobara la longitud del numero y de acuerdo a su longitud lo tratara como EAN8 o EAN13*/
public static void EAN(String a){
//IF que Comprueba que la longitud es menor que 8 si es asi entonces es un EAN-8
if(a.length()<8){
for(int i=a.length()-1;i>-1;i--){//Aqui añado los numero a la lista empezando por el ultimo
Lista.add(a.charAt(i));
}
for(int i=8-a.length(); i>0; i--){/*La variable i es la resta de 8 - la longitud del string a y asi hacer la condicional
del bucle en caso de tener que meter 0*/
Lista.add('0');
}
}
//IF que comprueba si la longitud es mayor q 8 y menor que 13
else if(a.length()<13 &&a.length()>8){
for(int i=a.length()-1;i>-1;i--){//Aqui añado los numero a la lista empezando por el ultimo
Lista.add(a.charAt(i));
}
for(int i=13-a.length(); i>0; i--){/*La variable i es la resta de 13 - la longitud del string a y asi hacer la condicional
del bucle en caso de tener que meter 0*/
Lista.add('0');
}
}
else{
for(int i=a.length()-1;i>-1;i--){//Aqui añado los numero a la lista empezando por el ultimo
Lista.add(a.charAt(i));
}
}
}
////////////////////////////////////////////////////////////
public int getNumero() {
return numero;
}
//Este Metodo comprueba la longitud de la lista que se mete por parametro y segun la longitud realiza un metodo o otro
public static void Comprobar(ArrayList List,String Numero){
sumar(List);//Metodo que suma los numero segun la posicion
if(List.size()==8){
ComprobarEAN8();
}
else{
ComprobarEAN13(Numero);
}
}
/*Este metodo comprueba si la salida por pantalla debe de ser SI o NO*/
public static void ComprobarEAN8(){
if(numero%10==0){
System.out.println("SI");
}
else{
System.out.println("NO");
}
}
public static void ComprobarEAN13(String Numero){
if(numero%10==0){//En caso de que sea multiplo de 10 se procedera a averiguar a que pais pertenec
if(Lista.get(12)=='0'){
System.out.println("SI "+" " +"EEUU");
}
else{
for(int i=0;i<pais.length;i++){//Aqui recorro las columnas del array donde guardo el numero
aux=Numero.substring(0,pais[i][0].length());//Este string lo uso para cortar las primeras cifras del EAN y compararlo con los de la tabla
if(aux.equals(pais[i][0])){//Lo suso porque si coincide los numero de la tabla con los primeros digitos del EAN
System.out.println("SI "+" " +pais[i][1]);
break;//Si se mete que se rompa el bucle
}
else{
contador=i;
}
}
}
if(contador+1==pais.length){
System.out.println("SI "+"Desconocido " );
}
}
else{
System.out.println("NO");
}
}
public static void sumar(ArrayList Lista){
for(int i=1; i<Lista.size();i++){
//Con este if compruebo que la posicion del numero es par si es asi lo sumo a la variable par
if(i%2==0){
par=par+Character.getNumericValue((char) Lista.get(i));
}
else{//En caso contr.0ario lo sumo a la varibale impar
impar=impar+Character.getNumericValue((char) Lista.get(i));
// System.out.println("ComprobarMultiplo.Comprobar()");
}
}
//Una vez terminado el bucle sumo el resultado de los dos
numero=par+(impar*3);
if(numero%10!=0){//Si con la suma el resto de 10 no es 0 sumo el numero de la lista que esta en la posicion 0
numero=numero+Character.getNumericValue((char) Lista.get(0));
}
}
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)