簡體   English   中英

在 if-Statement 中初始化最終布爾值

[英]initializing final Boolean in if-Statement

所以我試圖在if語句中將leapyear設置為true,但是當我這樣做時,它告訴我第二個if語句中的leapYear沒有初始化。 謝謝你的幫助!

public class LeapYear {
    public static void main(String[] args) {
        int year = 1600 + (int)(Math.random() * 500);
        final boolean leapYear;
        
        if(year%4==0){
           leapYear = true;
        }

        if (leapYear){
            System.out.println(year + " leap");
        } else {
            System.out.println(year + " notleap");
        }
    }
}
    

如果我們宣布一個final的變量外if - else語句來,並在初始化if分枝,我們必須初始化它在相應的else分枝為好。 如果else分支不存在,我們必須創建一個,否則變量未初始化iff。 未輸入if分支。

class Ideone {
  public static void main(String[] args) {
    int year = 1600 + (int)(Math.random() * 500);
    final boolean leapYear;

    if(year%4==0){
      leapYear = true;
    } else {
      leapYear = false;
    }

    if (leapYear){
      System.out.println(year + " leap");
    } else {
      System.out.println(year + " notleap");
    }
  }
}

Ideone 演示

閏年變量可能並不總是被初始化

    public class LeapYear {
        public static void main(String[] args) {
            int year = 1600 + (int)(Math.random() * 500);
            boolean leapYear = false;
            
            if(year%4==0){
               leapYear = true;
            }
   
            if (leapYear){
                System.out.println(year + " leap");
            } else {
                System.out.println(year + " notleap");
            }
         }
   }
public class LeapYear {
public static void main(String[] args) {
    int year = 1600 + (int)(Math.random() * 500);
    boolean leapYear = year % 4 == 0;
    
    if (leapYear){
        System.out.println(year + " leap");
    } else {
        System.out.println(year + " notleap");
    }
}

}

您必須在變量名稱之前刪除final並將變量初始化為 false

例如

public static void main(String[] args) {
    int year = 1600 + (int)(Math.random() * 500);
    boolean leapYear = false;
    
        if(year%4==0){
           leapYear = true;
       
         }

    if (leapYear){
        System.out.println(year + " leap");
    } else {
        System.out.println(year + " notleap");
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM