2011-11-02 18 views
0

我有一個任務,其中我的程序輸出一個簡單的字符串,如果另一個字符串的條件使用,但我一直遇到問題,我不能創建一個新的實例(我認爲這就是它被稱爲)如何在程序中使用object object1 = new object?

無論如何,這裏是我的代碼

import java.util.Scanner; 


public class EP54 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in);  
     System.out.print("Do you want to continue? "); 
     **yesNoChecker check1 = new yesNoChecker();** 
     System.out.print(EP54.yesNoChecker); 
    } 

    public String yesNoChecker() 
    { 
     if(in.equalsIgnoreCase("y") || 
     in.equalsIgnoreCase("yes") || 
     in.equalsIgnoreCase("Sure") || 
     in.equalsIgnoreCase("why not")) 
     System.out.println("OK"); 
     else if(in.equalsIgnoreCase("y") || 
     in.equalsIgnoreCase("yes") || 
     in.equalsIgnoreCase("Sure") || 
     in.equalsIgnoreCase("why not")) 
     System.out.println("Terminating."); 
     else 
     System.out.println("Bad Input"); 
    } 
} 

請幫幫我! (粗體部分是我得到錯誤的地方)

任何人都可以給我一個工作版本的代碼,所以我可以將它與我的進行比較嗎?

+0

yesNoChecker()是一個方法,你不能實例化。 –

+0

好我將我的代碼更改爲:http://pastie.org/2796683 – DSdavidDS

+0

在第10行,我得到錯誤「無法從靜態內容引用非靜態方法yesNoChecker(java.util.Scanner)」 – DSdavidDS

回答

1
import java.util.Scanner; 

public class EP54 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in);  
     System.out.print("Do you want to continue? "); 
     String answer = in.next(); 
     yesNoChecker(answer); 
    } 

    public static void yesNoChecker(String in) 
    { 
     if(in.equalsIgnoreCase("y") || 
     in.equalsIgnoreCase("yes") || 
     in.equalsIgnoreCase("Sure") || 
     in.equalsIgnoreCase("why not")) 
     System.out.println("OK"); 
     else if(in.equalsIgnoreCase("n") || 
     in.equalsIgnoreCase("no") || 
     in.equalsIgnoreCase("nope") || 
     in.equalsIgnoreCase("quit")) 
     System.out.println("Terminating."); 
     else 
     System.out.println("Bad Input");; 
    } 
} 

得到它

0

yesNoChecker()是一個函數,而不是一個對象。在這種情況下,您將想要調用yesNoChecker()(也稱爲「調用方法」),而不是實例化yesNoChecker(也稱爲「創建對象」)。相反,你的代碼應該是這個樣子:

import java.util.Scanner; 


public class EP54 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in);  
     System.out.print("Do you want to continue? "); 
     yesNoChecker(); 
     System.out.print(EP54.yesNoChecker); 
    } 

    public String yesNoChecker() 
    { 
     // (omitted for brevity) 
    } 
} 

實例化一個類類型的新對象。例如,Scanner是您在此使用的Java爲您提供的類。當你說new Scanner()時,你正在創建一個Scanner類的新實例。

+1

不要忘記字符串返回! –

+0

EP54.yesNoChecker仍然是方法(也不是靜態的)。我想你可以在系統出來之前刪除方法調用,只需將系統更改爲yesNoChecker()即可。順便說一句,如果這是任務,不應該被標記爲功課? – aishwarya

0

yesNoChecker是一種方法,而不是一個類 - 你不能實例化它。

您可以呼叫它:

yesNoChecker(); 

但是,它被定義爲返回一個字符串,它目前沒有做。您可能想要返回現在正在打印的字符串。

+0

你向我展示了這一點! –

0

您還需要從用戶/掃描儀類中獲取實際輸入。

喜歡的東西:

String s = in.nextLine(); 

那麼你應該比較字符串s到任何你需要( 「Y」, 「是」 等)

希望這有助於!

p.s.你的功能是這樣做的,但考慮一下是否有人輸入數字而不是字母或作品。在使用之前驗證輸入始終是一個好主意。

相關問題