2017-06-06 134 views
0

我是QT C++的初学者,我试图在label_j上打印Julian的日期,并尊重数组列表中提到的值。我无法做到这一点。请你能看到并纠正它。提前致谢。根据Julian日历计算的月份

当前月份已经从UTC, 取如果一个月等于一月然后打印0, 一个月等于然后打印31, 月三月等于然后打印59,以此类推,直到它达到12月合约。

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

你的代码是否被编译?你的'switch'语法看起来不对,即你从不指定case值:'case 1:...'。您将一个字符串分配给一个int,即'month =“January”;'。您将一个int分配给QString,即'answer = month_arr [0];'。 – m7913d

+0

@ m7913d ...谢谢你的关注,那么,请问你会在这里看到我的确切代码。非常感谢 – Explorer

回答

0

我看到两个主要错误:

首先,你case声明的条件是空的。你应该这样做:

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

    ... 

    default: 
     ... 
     break; 
} 

所以,你的代码就变成了:

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

    ... 

    default: 
     month="invalid"; 
     break; 
} 

的第二个主要问题是ui->label_j->setText(answer);应该走出switch循环。就目前而言,这个声明永远不会被执行。

编辑:正如m7913d注意到的,您有很多类型错误。检查变量的类型!

+0

感谢您的关注,那么,请问您会在这里看到我的确切代码。非常感谢 – Explorer