[ Foro de retos de programación ]

No veo el error

05-Sep-2021 21:25
Invitado (NovatoProgramer)
0 Respuestas

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.)