2016-11-14 65 views
-1

當我試圖編譯這個程序時,我總是得到這個錯誤 - 我知道靜態變量是類的變量,不能放入非靜態方法或變量中。正如我在java的初學者(如我)中看到的其他問題一樣,它可能是「正確的」。任何幫助表示讚賞。錯誤:非法表達式開始

import java.util.Scanner; 

public class Sims 
{ 


    public static void main(String[] args) 
    { 
     //Class constructor 
     System.out.println("Enter a last name");   
     static Scanner name = new Scanner(System.in); 
      static String names1 = name.nextLine();//reading the input 
     static String last_name = names1; 
     intro(); 
    } 

    public static void intro() 
    { 
     System.out.println("I'm an instance! " + last_name); 
    } 
} 
+5

局部變量不能是靜態的。從'name','names1'和'last_name'中刪除該關鍵字。 –

+0

'static'只能用於類成員,不能用於局部變量。讓'intro'方法接受字符串參數並將'last_name'作爲參數傳遞給它。 – Pshemo

+0

同樣在你的'intro'方法中,你試圖從'main'方法訪問局部變量(一旦你按照其他註釋的建議去除了靜態聲明) – Stefan

回答

0

從主範圍內的所有局部變量中刪除static

import java.util.Scanner; 

public class Sims 
{ 
    private String last_name; 

    public static void main(String[] args) 
    { 
     //Class constructor 
     System.out.println("Enter a last name");   
     Scanner name = new Scanner(System.in); 
     String names1 = name.nextLine();//reading the input 
     String last_name = names1; 
     intro(last_name); 
    } 

    public static void intro(String name) 
    { 
     System.out.println("I'm an instance! " + name); 
    } 
} 

瞭解何時使用static,https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

+0

Srry,我不是指Javadoc ... – Tacolibre

+0

謝謝安迪!不知道'代碼'的事情。 – Tacolibre

+0

如果你遵循這個答案,你仍然會遇到編譯器錯誤,''intro()'方法中''last_name'不能解析爲變量」。 – Andreas