簡體   English   中英

錯誤:Java中應有標識符

[英]Error: identifier expected in Java

我是Java的新手。 我學習了一些Java核心概念。 運行以下代碼時,出現標識符預期錯誤:

class Sekar {
  public static int i,j,k;
  i = 900;
  static void max()
  {
    j = 100;
    if(i>j)
    {
      k=i;
    }
    else {
      k=j;
    }
    System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k);
  }               
  public static void main(String[] args) {
     max();       
  }
}

編譯代碼時,出現以下錯誤:

error: identifier expected
  i    =  900;
     ^
  1. 誰能解釋為什么此錯誤在這里發生?
  2. 當我用谷歌搜索標識符預期錯誤時,我發現當聲明變量而沒有數據類型時會發生此錯誤,但是我對所有變量i,j,k都聲明了這一錯誤。
  3. 當我像int i = 900這樣將值設置為“ i”時再次聲明數據類型時,它可以工作。 為什么呢
i = 900;

這是Java中的一條語句,它可以在Constructor或方法內,也可以在初始化塊內。

就您而言,您可以將其移動到max()方法中

當我將值設置為“ i”(如int i = 900時再次聲明數據類型時,它將起作用。 為什么呢

在這里,您要在同一時間,同一行中聲明並分配該值。

在此處查看更多詳細信息,並在此處查看有關Java語句,表達式的信息

聲明

陳述大致相當於自然語言中的句子。 一條語句構成了完整的執行單元。 通過使用分號(;)終止表達式,可以將以下類型的表達式制成語句。

  • 賦值表達式
  • 任何使用++或-
  • 方法調用
  • 對象創建表達式

Hava看看Java:期望的標識符

i = 900;

和其他聲明一樣。 您無法在任何地方編寫語句。 它必須在方法/構造函數主體中。 聲明中的初始化變量稱為定義 ,是該規則的例外。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

如果要初始化靜態變量,可以使用2種(合理的)方法:在聲明它的位置初始化變量:

class Sekar {
  public static int i = 900, j,k;

  static void max()
  {
    j = 100;
    if(i>j)
    {
      k=i;
    }
    else {
      k=j;
    }
    System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k);
  }               
  public static void main(String[] args) {
     max();       
  }
}

或在靜態構造函數中執行:

class Sekar {
  public static int i, j,k;

  static {
    i = 900;
  }

  static void max()
  {
    j = 100;
    if(i>j)
    {
      k=i;
    }
    else {
      k=j;
    }
    System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k);
  }               
  public static void main(String[] args) {
     max();       
  }
}

另外,如果要定義常量 ,建議使用final關鍵字。

j可以轉換為局部變量

class Sekar {
  public static final int I = 900;

  static void max()
  {
    int k;
    int j = 100;
    if(I>j)
    {
      k=I;
    }
    else {
      k=j;
    }
    System.out.println("The maxmimum vale between"+I+"and"+j+"is :"+k);
  }               
  public static void main(String[] args) {
     max();       
  }
}

您可能想做的是:

class Sekar {
    public static int i=900,j=100,k;
    static void max()
    {
        if(i>j)
        {
            k=i;
        }
        else {
            k=j;
        }
        System.out.println("The maxmimum vale between"+i+"and"+j+"is :"+k);
    }
    public static void main(String[] args) {
        max();
    }
}    

但是,在這種情況下,我不鼓勵您使用靜態字段。 我建議您為您的方法設置ijk參數。 並在使用時為他們提供描述性名稱。

還要注意, k沒有顯式初始化,因此默認情況下設置為0 ,因此永遠不會到達else子句。

暫無
暫無

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

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