2017-06-06 3 views
0

Je suis un débutant en QT C++, et j'essaye d'imprimer le jour de Julian sur un label_j en respectant la valeur mentionnée dans la liste de tableau. Je suis incapable de faire ça. S'il vous plaît pourriez-vous voir et corriger cela. Merci beaucoup d'avance.calcul du mois selon le calendrier julien

mois actuel est été rapportez de l'UTC, si le mois égal janvier puis imprimer 0, mois égal, puis imprimer 31, mois égal Mars puis imprimer 59 et ainsi de suite jusqu'à ce qu'il atteindre Décembre.

void MainWindow::getJulianDay() 

{

int month_arr[]={0,31,59,90,120,151,181,212,243,273,304,334}; 
    QString January, February, March, April, May, June, July, August, September, October, November, December; 

    QDateTime local(QDateTime::currentDateTimeUtc()); 
QDateTime UTC(local.toUTC()); 
QString month=UTC.toString("MMMM"); 



switch (month) 
{ 

    case January: 
     month=month_arr[0]; 
     break; 
    case February: 
     month=month_arr[1]; 
     break; 
    case March: 
     month=month_arr[2]; 
     break; 
    case April: 
     month=month_arr[3]; 
     break; 
    case May: 
     month=month_arr[4]; 
     break; 
    case June: 
     month=month_arr[5]; 
     break; 
    case July: 
     month=month_arr[6]; 
     break; 
    case August: 
     month=month_arr[7]; 
     break; 
    case September: 
     month=month_arr[8]; 
     break; 
    case October: 
     month=month_arr[9]; 
     break; 
    case November: 
     month=month_arr[10]; 
     break; 
    case December: 
     month=month_arr[11]; 
     break; 
    default: month=invalid; 
    break; 

    ui->label_j->setText(month); 


} 
+1

Est-ce que votre code compile? Votre syntaxe 'switch' semble incorrecte, c'est-à-dire que vous ne spécifiez jamais la valeur du cas:' case 1: ... '. Vous affectez une chaîne à un int, c'est-à-dire 'month =" January ";'. Vous affectez un int à une chaîne QString, c'est-à-dire 'answer = month_arr [0];'. – m7913d

+0

@ m7913d ... merci pour vous préoccupé, Alors, quel sera le code exact pour le même, s'il vous plaît me montrer ici. merci beaucoup – Explorer

Répondre

0

Je vois deux erreurs principales:

Tout d'abord, vos case conditions de déclaration sont vides. Vous devriez faire:

switch(variable) { 
    case condition1: 
     ... 
     break; 
    case condition2: 
     ... 
     break; 

    ... 

    default: 
     ... 
     break; 
} 

Ainsi, votre code devient:

switch (month); 
{ 
    case 1: 
     month="January"; 
     answer=month_arr[0]; 
     break; 
    case 2: 
     month="February"; 
     answer=month_arr[1]; 
     break; 

    ... 

    default: 
     month="invalid"; 
     break; 
} 

Le deuxième problème principal est que ui->label_j->setText(answer); devrait être hors de la boucle switch. Comme c'est le cas actuellement, cette déclaration ne sera jamais exécutée. Edit: Comme l'a remarqué m7913d, vous avez beaucoup d'erreurs de type. Passez en revue le type de vos variables!

+0

merci pour vous concernés, Alors, quel sera le code exact pour le même, s'il vous plaît me montrer ici. Merci beaucoup – Explorer