Foro sobre Java SE > Ayuda con último ejercicio antes de examen
Hola, prueba con esto a ver si te vale.
public class UsoParquimetro {
/**
* @param args the command line arguments
*/
/*class Parquimetro{
}*/
public static String matricula;
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
try {
System.out.println("Parquimetro de monedas");
System.out.println("Siga atentamente las intrucciones");
System.out.print("Introducir Matricula: ");
matricula = entrada.next();
Pattern pat = Pattern.compile("\\d{4}[A-z]{3}");
Matcher mat = pat.matcher(matricula);
if(mat.matches()){
System.out.println("Matricula valida");
}
else{
System.out.println("Matricula invalida");
}
System.out.println("Prueba");
} catch (Exception e) {
System.out.println("Error");
}
}
}
Un saludo
No tienes que poner try y catch, desde la clase parquimetro tienes que lanzar una excepcion (throw new ExcepcionMatricula()) para que sea recogida en la clase UsoParquimetro.
No pongas un metodo main en la clase Parquimetro (El metodo main es el que se ejecuta al iniciar el programa, debería estar en UsoParquimetro y desde ahí llamar a los distintos métodos de Parquimetro) haz un constructor vacio que inicialice las variables y luego crea metodos, uno de ellos que sea por ejemplo public String obtenerMatricula() throws ExcepcionMatricula, otro para las monedas...
Espero haberte ayudado
Llevo ya casi un día atrapado en el mismo punto, en la validación de la matricula y veo que no salgo de ahí, y tengo de fecha limite hasta el 23, si alguien pudiese echarme una ayuda, el ejercicio es lo siguiente
Realizar un proyecto Java en el Entorno Netbeans que simule el funcionamiento de un parquímetro de la Zona Azul. Se considerarán las siguientes circunstancias:
- El tiempo máximo de estancia será de 2 horas. No se admitirán monedas por un importe superior al que corresponde a ese tiempo máximo.
- El coste por minuto es de 0’015€.
Se basarán en dos clases:
a) Parquimetro
b) UsoParquimetro
La clase Parquimetro asumirá la responsabilidad de ofrecer la funcionalidad básica del parquímetro, teniendo entre otras misiones detectar los posibles errores que se pueda producir en la introducción de la matrícula y en el intento de introducir monedas que correspondan un tiempo de estacionamiento superior al máximo permitido de 2 horas.
Estas situaciones provocarán el correspondiente lanzamiento de excepciones desde la clase Parquimetro que serán recogidas y gestionadas en la clase UsoParquimetro.
En el momento de introducir la matrícula se comprobará:
1) Que el número de caracteres sea 7.
2) Que los cuatro primeros son dígitos numéricos.
3) Que los tres últimos son letras.
La figura adjunta muestra uno de los casos:
https://s30.postimg.org/6zvs7a2b5/image.jpg
Toda la entrada/salida por consola se deberá realizar exclusivamente en la clase UsoParquimetro. Es decir NO se permitirá ninguna instrucción de entrada/salida en la clase Parquimetro.
La impresión del recibo contendrá el valor de la matrícula introducida así como la hora máxima de estacionamiento. Para poder calcular este último dato se deberá hacer uso de la clase de biblioteca GregorianCalendar.
Una muestra es la que aparece a continuación:
https://s30.postimg.org/iq9ponv3l/image.jpg
Si la cantidad monetaria introducida es superior a la que correspondería a una estancia máxima de 2 horas, el programa debería responder tal como se muestra en la siguiente figura:
https://s30.postimg.org/nq75wm0q9/image.jpg
la validación la estoy haciendo dentro del try, en el anterior ejercicio también me pasó que me atasque en la gestión de errores, llevo esto...
package usoparquimetro;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Cristian Fernández Moreno
*/
public class UsoParquimetro {
/**
* @param args the command line arguments
*/
/*class Parquimetro{
}*/
public static String matricula;
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
try{
System.out.println("Parquimetro de monedas");
System.out.println("Siga atentamente las intrucciones");
System.out.print("Introducir Matricula: ");
matricula = entrada.next();
Pattern pat = Pattern.compile("((\\d{4})([A-Z]{3}))");
Matcher mat = pat.matcher(matricula);
System.out.println("Prueba");
}
catch (Exception e){
System.out.println("Error");
}
}
}
QUE SE NOTE EL SOBRESALTO DEL SYSTEM.OUT.....("Prueba"); porque de ahi no paso, esto que tengo no me da el error y me sale el mensaje de error, y me estoy desesperando ya de tanto pensar... y la duda es si lo siguiente de las monedas se haría con una estructura repetitiva while?