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


0