2015-10-07 116 views
0

我試圖調試工作分配這個簡單的應用程序,但我不知道爲什麼它不會編譯...標識符預期,爪哇

import java.util.Scanner; 
public class DebugThree3 
{ 
    public static void main(String[] args) 
    { 
     String name; 
     getName(); 
     displayGreeting(name); 
    } 

    public String getName(name) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter name: "); 
     name = input.nextLine(); 
     return name; 
    } 

    public static void displayGreeting() 
    { 
     System.out.println("Hello, " + name + "!"); 
    } 
} 

試圖編譯告訴我一個標識符預計在第12行,public String getName(name)。誰能告訴我我在這裏失蹤了什麼?

感謝

+1

沒有一個。問題太多了。 –

+2

爲什麼'getName()'帶一個參數,但是'displayGreeting()'不?你不想'String name = getName();'? –

回答

0

你需要指定一個方法接受

public String getName(String name) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter name: "); 
     name = input.nextLine(); 
     return name; 
    } 

main函數傳遞參數給getname函數的參數Type

像SURESH指出的那樣,getname功能需要被標記爲static。否則,您需要在訪問其中的方法之前創建類的對象。

+2

也getName應該是靜態的 –

0

我冒昧地以兩種標準的方式來修復你的程序,做你想做的事情。

目前你不及格name,你可能認爲它存在於它不作用域。

我也感動了冗餘奚落東西-IN-A-參數和返回行爲:

String name = input.nextLine() 
return name; 

而且只剩下:

return input.nextLine(); 

第一種方式是通過name功能之間作爲參數,指定其類型

import java.util.Scanner; 
public class DebugThree3 
{ 
    public static void main(String[] args) 
    { 
     String name = getName(); 
     displayGreeting(name); 
    } 

    public String getName() 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter name: "); 
     return input.nextLine(); 
    } 

    public static void displayGreeting(String name) 
    { 
     System.out.println("Hello, " + name + "!"); 
    } 
} 

第二種方法是將name作爲靜態類成員:

import java.util.Scanner; 
public class DebugThree3 
{ 

    String name; 

    public static void main(String[] args) 
    { 
     getName(); 
     displayGreeting(); 
    } 

    public String getName() 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter name: "); 
     DebugThree3.name = input.nextLine(); 
    } 

    public static void displayGreeting() 
    { 
     System.out.println("Hello, " + DebugThree3.name + "!"); 
    } 
}