Java - Error_Ejercicio106_CodigoDeBarras_AceptaElReto

 
Vista:

Error_Ejercicio106_CodigoDeBarras_AceptaElReto

Publicado por NovatoProgramer (1 intervención) el 05/09/2021 21:32:35
Hola, Haciendo el ejercicio 106 de la pagina acepta el reto, https://www.aceptaelreto.com/problem/statement.php?id=106, cuando realizo las pruebas de salida, me sale lo que me deberia de salir al menos con las pruebas que realizo pero cuando envio el codigo al juez me sale Wrong Answer, y la verdad es que no veo el error, si alguien me podria ayudar y decirme el error se lo agradeceria

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

}
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder