2014-10-01 79 views
-1

我對Java很新,希望有些幫助!當我編譯/運行「Driver.java」時,它會要求用戶鍵入他們的名字。而程序應該做的就是將這個名字傳遞給「Greeter.java」中的類以打印出最終的消息。如何在另一個類中使用一個類的字符串值?

我想實現一個接受字符串參數的構造函數,表示我的程序正在問候的人的名字。我必須使用此參數來初始化我在「Greeter」類中聲明的私有實例變量。這是我卡住了,但這裏是我到目前爲止有:

這裏是我的 「Driver.java」:

import java.util.Scanner; 

public class Driver 
{ 
    public static void main(String[] args) 
    { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("What is your name? "); 
     String name = scanner.nextLine(); 
     Greeter greeter = new Greeter(name); 
     String greeting = greeter.greet(); 
     System.out.println(greeting); 
    } 
} 

這是我的Greeter.java:

public class Greeter 
{ 
    String inputName; (This is where I got stuck) 

    public string greet() 
    { 
     return "Hello " + inputName; 
    } 

}

回答

1

您缺少構造函數

嘗試

public class Greeter 
{ 
    String inputName; 

    public Greeter (String inputName) { 
    this.inputName = inputName; 
    } 

    public String greet() 
    { 
     return "Hello " + inputName; 
    } 
} 
+0

它應該是'字符串'不'字符串' – 2014-10-01 04:21:24

+0

謝謝!正要問這個問題。 – Karen 2014-10-01 04:22:20

-1

改變你Greeter類。

public class Greeter{ 
    private String inputName;  

    public Greeter(){ 

    } 

    public Greeter (String inputName) { 
    this.inputName = inputName; 
    } 

    public String greet() 
    { 
     return "Hello " + inputName; 
    } 

} 
0

你需要做的構造函數,將採取的論點,即會在主類中使用:

public Greeter (String inputName) { // constructor with parameter that ll be called when Greeter's instance ll be created. 
    this.inputName = inputName; 
} 

在任何地方Greeter greeter = new Greeter(字符串「); will be called then inputName`變量會被初始化

所以每當你使用參數構造函數創建類的實例時,它都會初始化inputName變量。

public class Driver 
{ 
    public static void main(String[] args) 
    { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("What is your name? "); 
     String name = scanner.nextLine(); 
     Greeter greeter = new Greeter(name); 
     String greeting = greeter.greet(); 
     System.out.println(greeting); 
    } 
} 
0
Greeter greeter = new Greeter(name); 

要做到這一點,你需要它接受一個String變量作爲輸入參數在Greeter

public class Greeter { 
String inputName; 

public Greeter(String inputName) { // matching constructor 
    this.inputName = inputName; 
} 

public String greet() { 
    return "Hello " + inputName; 
} 
} 
0

經過以下代碼構造,

public class Greeter { 

    private String name; 

    public Greeter() { } 

    public Greeter(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String greet(){ 
     return "Hello "+ getName(); 
    } 

}

public class Driver { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     System.out.print("Enter your name : "); 
     Greeter greeter = new Greeter(input.nextLine()); 
     System.out.println(greeter.greet()); 

    } 

}

祝你好運!!!