Je suis nouveau sur ce site et je viens de commencer à apprendre Java. J'essaie d'ajouter quelques jours au calendrier grégorien, mais cela ne fonctionne pas. Ici ... (Ignorez le morceau du haut), c’est ennuyeux d’ajouter des dates en bas.
/*
* Author:Matt M
* Date:8.12.13
* Discription: When the user inputs the deadline, and the difficulity of the project,
* the program gives the date he should start working on it
*/
import Java.util.*;
public class DeadlinePlanner{
public static void main(String[] args)
{
//take information and restart questions if information is wrong
int month = 0, day = 0 ;
do
{
do
{
System.out.println("Input the month please");
month = (new Scanner(System.in).nextInt() - 1);
System.out.println("Input the day please");
day = (new Scanner(System.in).nextInt());
}
while (!(month <= 12) || !(month >= 0));
}
while (!(day <= 31) || !(month >= 0));
//Make new calender and initialize it
GregorianCalendar setup = new GregorianCalendar();
setup.set(2013, month, day);
System.out.println("The deadline is "+ setup.getTime());
//switch statement to give starting date
System.out.println("Is the project hard or easy?");
Scanner difficulity = new Scanner(System.in);
switch (difficulity.nextLine())
{
case "easy":
setup.add(day, -1);
System.out.print("The date you should start workinng on is ");
System.out.println(setup.getTime());
break;
case "hard":
setup.add(day, -10);
System.out.print("The date you should start workinng on is ");
System.out.println(setup.getTime());
break;
default:
System.out.println("Your answers to the questions are incorrect");
break;
}
}
}
Merci d'avoir lu tout ça! Je suis ouvert à tout commentaire ...
Il y a trop de code ici. Trop d'interaction utilisateur.
Commencez avec une méthode simple pour faire une chose, puis éliminez-vous une fois que vous avez réussi.
Voici comment vous pouvez le faire:
public class DateUtils {
private DateUtils() {}
public static Date addDays(Date baseDate, int daysToAdd) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(baseDate);
calendar.add(Calendar.DAY_OF_YEAR, daysToAdd);
return calendar.getTime();
}
}
Une fois que vous avez testé et prouvé cette méthode, vous pouvez laisser le reste de votre code l'appeler.
MISE À JOUR: Quatre ans plus tard, JDK 8 nous a fourni le nouveau progiciel de gestion du temps basé sur JODA. Vous devriez utiliser ces classes, not the JDK 1.0 Calendar
.
Vous devez changer les lignes qui ressemblent à:
setup.add(day, -1);
setup.add(day, -10);
à
setup.add(GregorianCalendar.DAY_OF_MONTH, -1);
setup.add(GregorianCalendar.DAY_OF_MONTH, -10);
Voir GregorianCalendar pour plus d'informations.
La calandre grégorienne a sa propre valeur que vous devriez utiliser pour lui dire ce que vous augmentez Là où vous dites
setup.add(day, -1);
vous devez utiliser la valeur calandre grégorienne pour le jour
setup.add(Calendar.DAY_OF_MONTH, -1);
Calendar c = new GregorianCalendar(2000, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);
Plus d'informations sur le calendrier et ses champs peuvent être trouvés ici Calendrier
Essayez également de regarder ce post passé: here