我是QT C ++的初学者,我正试图在label_j
上打印朱利安日,而不考虑数组列表中提到的值。我无法做到这一点。请你能看到并纠正它。非常感谢提前。
当前月份是从UTC获取的, 如果月份相等,那么打印0, 月等于打印31, 月等于三月,然后打印59,依此类推,直至到达十二月。
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);
}
答案 0 :(得分: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所注意到的,你有很多类型错误。检查变量的类型!