Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > URGENTE Calendario Java Marcando Fecha

Necesito crear un calendario que al introducir tres valores me devuelva lo siguiente: 1) el primer valor significa el día de la semana en el que iniciará el calendario (1-7, lunes-domingo); 2) cantidad de días que tiene el mes (28,30,31); 3) el tercer valor debe indicarme un día del mes que se desee marcar (por ejemplo: "2","30","9" significaría que el calendario tiene 30 días, iniciando en martes, marcando la fecha [9]. Tengo gran parte del código, pero necesito ayuda para añadir la parte de "marcar la fecha".
Código a continuación:
Gracias amigos!

public class CalendarioConMarca{
public static void main (String[] args) {
mostrarMes(Integer.parseInt(args[0]),
Integer.parseInt(args[1]));
}
private static void mostrarMes (int diaInicioMes,
int ultimaFechaDelMes) {
int siguienteColumnaDiaAUsar = diaInicioMes;
int siguienteFechaAMostrar = 1;
mostrarLineaMesDeGuiones();
mostrarNombresDias();
int numFilas = 0;
while(siguienteFechaAMostrar <= ultimaFechaDelMes || numFilas < 6){
System.out.print("|");
for(int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if(numColumnaDia > 1) {
System.out.print(" ");
}
if(numColumnaDia != siguienteColumnaDiaAUsar ||
siguienteFechaAMostrar > ultimaFechaDelMes){
mostrarEspacioFecha();
} else {
mostrarFecha(siguienteFechaAMostrar);
siguienteColumnaDiaAUsar++;
siguienteFechaAMostrar++;
}
}
System.out.println("|");
numFilas++;
siguienteColumnaDiaAUsar = 1;
}
mostrarLineaMesDeGuiones();
}
private static void mostrarLineaMesDeGuiones() {
System.out.print(" ");
for(int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if(numColumnaDia > 1) {
System.out.print("--");
}
mostrarGuionesFecha();
}
System.out.println(" ");
}
private static void mostrarNombresDias(){
System.out.print("|");
for(int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if(numColumnaDia > 1) {
System.out.print(" ");
}
mostrarNombreDia(numColumnaDia);
}
System.out.println("|");
}
private static void mostrarNombreDia(int numDia) {
switch(numDia) {
case 1: System.out.print("Lu"); break;
case 2: System.out.print("Ma"); break;
case 3: System.out.print("Mi"); break;
case 4: System.out.print("Ju"); break;
case 5: System.out.print("Vi"); break;
case 6: System.out.print("Sa"); break;
case 7: System.out.print("Do"); break;
}
}
private static void mostrarEspacioFecha() {
System.out.print(" ");
}
private static void mostrarGuionesFecha() {
System.out.print("--");
}
private static void mostrarFecha(int fecha) {
System.out.printf("%02d", fecha);
}
}

junio 8, 2015 | Registered Commenterjavimoguelr

Le he echo un par de cambios a tu código... échale un ojo a ver si eso es lo que necesitas....


public class CalendarioConMarca {

public static void main(String[] args) {
mostrarMes(Integer.parseInt("2"),
Integer.parseInt("30"),Integer.parseInt("9"));
}

private static void mostrarMes(int diaInicioMes,
int ultimaFechaDelMes,int fechaMarc) {
int diaAct=0;
int siguienteColumnaDiaAUsar = diaInicioMes;
int siguienteFechaAMostrar = 1;
mostrarLineaMesDeGuiones();
mostrarNombresDias();
int numFilas = 0;
while (siguienteFechaAMostrar <= ultimaFechaDelMes || numFilas < 6) {
System.out.print("|");
for (int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if (numColumnaDia > 1) {
System.out.print(" ");
}
if (numColumnaDia != siguienteColumnaDiaAUsar
|| siguienteFechaAMostrar > ultimaFechaDelMes) {
mostrarEspacioFecha();
} else {
diaAct++;
if(diaAct==fechaMarc){
System.out.print("XX");
siguienteColumnaDiaAUsar++;
siguienteFechaAMostrar++;
}
else{
mostrarFecha(siguienteFechaAMostrar);
siguienteColumnaDiaAUsar++;
siguienteFechaAMostrar++;
}
}
}
System.out.println("|");
numFilas++;
siguienteColumnaDiaAUsar = 1;
}
mostrarLineaMesDeGuiones();
}

private static void mostrarLineaMesDeGuiones() {
System.out.print(" ");
for (int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if (numColumnaDia > 1) {
System.out.print("--");
}
mostrarGuionesFecha();
}
System.out.println(" ");
}

private static void mostrarNombresDias() {
System.out.print("|");
for (int numColumnaDia = 1; numColumnaDia <= 7; numColumnaDia++) {
if (numColumnaDia > 1) {
System.out.print(" ");
}
mostrarNombreDia(numColumnaDia);
}
System.out.println("|");
}

private static void mostrarNombreDia(int numDia) {
switch (numDia) {
case 1:
System.out.print("Lu");
break;
case 2:
System.out.print("Ma");
break;
case 3:
System.out.print("Mi");
break;
case 4:
System.out.print("Ju");
break;
case 5:
System.out.print("Vi");
break;
case 6:
System.out.print("Sa");
break;
case 7:
System.out.print("Do");
break;
}
}

private static void mostrarEspacioFecha() {
System.out.print(" ");
}

private static void mostrarGuionesFecha() {
System.out.print("--");
}

private static void mostrarFecha(int fecha) {
System.out.printf("%02d", fecha);
}
}

Simplemente he creado una variable diaAct que va conteniendo el día que estas representando, y antes de escribir el dia en pantalla pregunto... el día que voy a representar es el marcado? si, entonces pon "XX" sino, entonces pon el día normal...

Eso se representa en este if -- else:


if(diaAct==fechaMarc){
System.out.print("XX");
siguienteColumnaDiaAUsar++;
siguienteFechaAMostrar++;
}
else{
mostrarFecha(siguienteFechaAMostrar);
siguienteColumnaDiaAUsar++;
siguienteFechaAMostrar++;
}

Bueno un saludo!

junio 9, 2015 | Unregistered Commenterloderain