如何分配在if else语句中定义的变量

时间:2014-12-27 03:40:30

标签: java if-statement

我需要创建能够在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。

4 个答案:

答案 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;
相关问题