2013-12-10 103 views
2

我正在關注CS106A在線講座。我正在通過第12講的代碼,但它給了我在Eclipse中的錯誤。無效方法無法返回值

這是我的代碼。看來錯誤是因爲我的main方法中有void這個詞。我試圖刪除主要的方法,但是當然Java沒有它就無法運行。

我是新手,沒有人解釋過String[] args這個東西的真正含義,但我被告知只是忽略它並使用它。如果有人能向我解釋這一點,我會很感激。 'toLower'方法也出現這種錯誤;不知道它是什麼意思: 參數toLower的非法修飾符;只有最終被允許

(如果有幫助;代碼的點是大寫字母轉換爲小寫的一個)

public class CS106A { 

    public static void main(String[] args){ 

     public char toLower(char ch); 
      if (ch >= 'A' && ch <= 'Z'){ 
       return ((ch - 'A') + 'a'); 
     } 
     return ch;  
    } 

} 

感謝

+1

類似問題的討論是50分鐘回來http://stackoverflow.com/questions/20489856/java-illegal-start-of-an-expression-error – SpringLearner

+0

String [] args'是一個數組你傳遞你的程序的命令行參數。很可能這是空的,因爲你沒有通過任何。 –

回答

6

你應該定義你的方法主要之外,如:

public class YourClass 
{ 
    public static void main(String... args) 
    { 

    } 

    public char yourMethod() 
    { 
     //... 
    } 
} 

Java不支持嵌套的方法;然而,有workarounds,但他們不是你要找的。

至於你的問題args,它只是一個Strings數組,對應於命令行參數。考慮以下幾點:

通過 java YourClass Hello, World!

執行

public static void main(String... args) //alternative to String[] args 
{ 
    for (String argument: args) 
    { 
     System.out.println(argument); 
    } 
} 

將打印

你好,
字!

2

你不能聲明的方法(toLower)內另一種方法(main)。

0

你不能在java中有嵌套的方法。方法是main()

分別使用兩種方法。 void表示這些方法沒有任何回報。

您可以嘗試如下

public static void main(String[] args){ 
    char output=new CS106A().toLower('a'); // calling toLower() and take the 
              // return value to output 

} 


public char toLower(char ch){ 
if (ch >= 'A' && ch <= 'Z'){ 
    return ((ch - 'A') + 'a'); 
    } 
return ch; 
} 
0

嵌套的方法定義的Java不允許。你定義了你的方法toLower()main方法

1

是返回void類型不能返回任何值。

如果你爲這個進程創建一個單獨的函數,它會返回一些值並從main()調用它會更好。

public class Test 
{ 
    public static void main(String[] args) 
    { 
     String[] a = testMethod(); 
    } 

    public String[] testMethod() 
    { 
     ..... 
     ..... 
     return xx; 
    } 
} 

希望它能幫助你。

謝謝

0

在Java中不能有這樣的嵌套方法。 CS106A是一個類。 main()toLower()是它的兩種方法。分開寫。

至於main()方法參數中的String[] args,它與C中的int arc, char **argv類似,前提是您已經學會了。所以基本上args是所有命令行參數所在的數組。

1

您需要聲明的主要

public class YourClass 
{ 
    public static void main(String... args) 
    { 

    } 

    public char yourMethod() 
    { 

    } 
} 

字符串ARGS位以外的方法,所以當你通過命令行運行它,你可以發送值(字符串)

>java myprogram var1 var2 .... 
1

因爲您已添加;在方法結束

糾正代碼:

public class CS106A { 

public static void main(String[] args){ 
Char char=new CS106A.toLower('s'); 
System.out.println(char); 
} 

public char toLower(char ch) 
{ 
    if (ch >= 'A' && ch <= 'Z'){ 
     return ((ch - 'A') + 'a'); 
    } 
    return ch;  
} 
} 

請閱讀如何編寫Java方法在任何Java網站

0
public class CS106A 
{ 
    public static char toLower(char ch) 
    { 
     if (ch >= 'A' && ch <= 'Z') 
     { 
      return ((ch - 'A') + 'a'); 
     } 
    return ch; 
    } 
    public static void main(String[] args) 
    { 

     System.Out.Println(toLower('A')); 

    } 

} 

希望這會幫助你。

0

string [] main方法中的args用於遵循該技術定義的原型。如果你不使用它,那麼JVM會認爲它是一個簡單的方法。同樣,因爲這是原型,那麼記住技術使用數組的0字節。爲前:以上

   class MainDemo{ 
        public static void main(){ 
        System.out.println("I am main method without arg"); 
       } 
       public static void main(String[] args){ 
         main(); //As method is static so no need to create an object 
        System.out.println("MainDemo"); 
       } 
       } 

O/P會給:

I am main method without arg 
MainDemo 

關於你的代碼,你不能定義/聲明主要方法中的任何方法。在主要方法之外但在課堂內使用它。