Void方法不能返回值

时间:2013-12-10 09:42:13

标签: java methods void

我正在网上关注CS106A讲座。我正在阅读第12讲的代码,但是它给了我Eclipse中的错误。

这是我的代码。似乎错误是因为main方法中的单词void。我尝试删除main方法,但当然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;      
    }

}

由于

10 个答案:

答案 0 :(得分:6)

您应该在main之外定义您的方法,例如:

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

    }

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

Java不支持嵌套方法;但是,有workarounds,但它们不是你想要的。

关于args的问题,它只是一个Strings数组,对应于命令行参数。请考虑以下事项:

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

通过java YourClass Hello, World!执行

将打印

  

你好,
Word!

答案 1 :(得分:2)

您无法在其他方法(toLower)中声明方法(main)。

答案 2 :(得分:1)

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

如果为此过程创建一个单独的函数会更好,它将返回一些值并从main()调用它。

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

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

希望它会对你有所帮助。

由于

答案 3 :(得分:1)

您需要在主

之外声明您的方法
public class YourClass
{
    public static void main(String... args)
    {

    }

    public char yourMethod()
    {

    }
}

字符串args位是这样的,当你通过命令行运行它时,你可以发送值(作为字符串)

>java myprogram var1 var2 ....

答案 4 :(得分: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中编写方法

答案 5 :(得分:0)

你不能在java中使用嵌套方法。

toLower()方法位于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;   
}

答案 6 :(得分:0)

java中不允许使用嵌套方法定义。您已在toLower()方法中定义了方法main

答案 7 :(得分:0)

您不能在Java中使用这样的嵌套方法。 CS106A是一个类。 main()toLower()是它的两种方法。单独写下来。

对于main()方法参数中的String[] args,如果您之前已经学过它,则类似于在C中说int arc, char **argv。所以基本上args是一个所有命令行参数的数组。

答案 8 :(得分: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'));

    }

}

希望这会对你有所帮助。

答案 9 :(得分:0)

main方法中的

string [] 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

关于你的代码,你不能在main方法中定义/声明任何方法。在main方法之外但在课堂内使用它。