我需要创建能够在GMT中找到当前小时并将其转换为EST的内容。
当我尝试编译并运行程序时,我收到此错误:currentHourEST cannot be resolved to a variable
。我认为我的问题是在if else
语句中的某个地方,因为我将变量分配错误或其他。
// Obtain total milliseconds since midnight, Jan 1, 1970
long totalMilliseconds = System.currentTimeMillis();
// Seconds
long totalSeconds = totalMilliseconds / 1000;
long currentSecond = totalSeconds % 60;
// Minutes
long totalMinutes = totalSeconds / 60;
long currentMinute = totalMinutes % 60;
// Hours
long totalHours = totalMinutes / 60;
long currentHour = totalHours % 24;
// Read in EST offset
long offSetAdded = currentHour - 5;
// If the time is negative make it a positive
if (offSetAdded > 0) {
long currentHourEST = offSetAdded * -1;
} else {
long currentHourEST = offSetAdded;
}
// Display time
System.out.println("The current time is " + currentHourEST + ":" + currentMinute + ":" + currentSecond);
System.out.println("Current time in GMT is " + currentHour + ":" + currentMinute + ":" + currentSecond);
我正在使用if else语句将offSetAdded
多个-1
加倍,以便小时,如果从我减去5
时它是负数,则会变得正面,使其变得更容易让人们看到时间。如果offSetAdded
为正数,那么它会打印currentHour
,只减去5。
答案 0 :(得分:7)
if
块中定义的变量仅限于if block
,您根本无法使用if块之外的变量。
如果你想在一个块外面使用一个变量,只要在块中声明它就可以了。
// If the time is negative make it a positive
long currentHourEST;
if (offSetAdded > 0) {
currentHourEST = offSetAdded * -1;
} else {
currentHourEST = offSetAdded;
}
答案 1 :(得分:6)
将您的代码更改为:
// If the time is negative make it a positive
long currentHourEST;
if (offSetAdded > 0) {
currentHourEST = offSetAdded * -1;
} else {
currentHourEST = offSetAdded;
}
这将声明currentHourEST
块的变量if/else
outsite,因此您可以在方法的其余代码中使用它。
您当前的代码声明该块内的变量,这意味着如果程序存在if/else
块,则其生命周期结束。因此,您以后无法访问它。
请阅读此tutorial about variable scopes以了解详情。
答案 2 :(得分:4)
我不是一个足以说明发生了什么的专家,但是,如果你在if语句和if else语句之外声明currentHourEST,那么它应该可行。 像这样:
long currentHourEST;
// If the time is negative make it a positive
if (offSetAdded > 0) {
currentHourEST = offSetAdded * -1;
} else {
currentHourEST = offSetAdded;
}
答案 3 :(得分:2)
首先,您声明变量,然后初始化就像
long currentHourEST;
if (offSetAdded > 0) {
currentHourEST = offSetAdded * -1;
} else {
currentHourEST = offSetAdded;
}
或者您可以使用条件? :
运算符(也称为三元运算符)
long currentHourEST = (offSetAdded > 0) ? offSetAdded * -1 : offSetAdded;