我正在努力学习Java。
我不明白为什么这段代码不起作用。
它不会从Hello World
函数输出“test()
”。
我做错了什么?
public class Main {
public test(args) {
System.out.println(args);
}
public static void main(String[] args) {
test('Hello World');
}
}
答案 0 :(得分:15)
首先:
public test(args) {
System.out.println(args);
}
你需要一个带参数的类型 - Java是一种强类型语言,因此你总是需要指定一个类型。至于这里的类型是什么,System.out.println()
实际上可以采取任何东西,所以你可以将类型设置为String,Object或任何你喜欢的东西(因为Object有一个toString()
方法,它有很多重载处理所有的原语。)请记住,这是不寻常的,但你遇到的大多数方法只会采取特定类型的东西!
由于你只是在这里调用main方法中的test,而你正在向它传递一个字符串,所以你也可以将args的类型设置为String。
第二个问题是没有指定返回类型。您始终需要指定返回类型,在这种情况下不会返回任何内容,因此类型为void
。如果你不这样做,那么编译器无法知道你所写的内容是方法还是构造函数。
第三个问题是test是一个实例方法,但你是静态调用它。 test()也需要是静态的,否则它属于Main的实例,而不属于Main类。为什么这很重要?好吧,可能有数千个Main实例,那么该方法应该运行什么实例?编译器无法知道。
下一步:
public static void main(String[] args) {
test('Hello World');
}
你在这里传递一个字符串,需要用双引号。 Java以不同的方式处理引号,单引号用于单字符文字,双引号用于字符串。所以你永远不能把这个字符串用这样的单引号括起来,它必须加倍。
全部放在一起:
public class Main {
public static void test(String args) { //Add return type and parameter type, make test static
System.out.println(args);
}
public static void main(String[] args) {
test("Hello World"); //Change single quotes to double quotes
}
}
答案 1 :(得分:2)
在Java中,字符串总是使用双引号,而不是单引号。这是为char
类型保留的。
test("Hello World");
此外,您的测试函数没有返回类型(甚至不是void
),而且它是一个方法,而main是静态的,因此您需要实例化Main
或make {{ 1}}静态。您还需要为每个参数指定类型。
试试这个:
test
答案 2 :(得分:2)
test()方法缺少返回类型和参数的类型。将其更改为例如。
public void test(String args) {
System.out.println(args);
}
字符串需要用双引号括起来,所以将“Hello World”更改为“Hello World”
您的test()方法是Main类的实例成员,而main()是类方法。你需要一个Main类的实例来调用test()。 e.g。
public static void main(String[] args) {
new Main().test("Hello World");
}
你也可以让test()成为一个类方法,这样你就可以从main()
中调用它public static void test(String args) {
System.out.println(args);
}
答案 3 :(得分:2)
为类创建object
并在main方法中访问,或将方法声明设为static
答案 4 :(得分:1)
比较:
public class Main {
public static void test(String args) {
System.out.println(args);
}
public static void main(String[] args) {
test("Hello World");
}
}
答案 5 :(得分:1)
public class HelloWorld {
public void test(String str) {
System.out.println(str);
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.test("Hello World");
}
}
答案 6 :(得分:0)
测试应该是静态方法。 从静态方法你只能调用静态方法或 创建Main的实例并像
一样调用Main m = new Main() m.test(“你好世界”);
进一步的hello world应该是双引号。
答案 7 :(得分:0)
从java开始的简单步骤
使用记事本或任何其他编辑器在testjava中创建一个名为Hello.java的小文件,文本为
class Hello {
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
答案 8 :(得分:0)
您可以将它全部放在main方法中,而不是创建和使用测试方法,所以它看起来像这样:
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
请注意,双引号用于字符串,因为单引号通常用于字符:)
答案 9 :(得分:0)
public class Main {
// You always have to have a return type for a function, at least void
//Also, the datatype of every variable inside the parantheses () of a function must be defined
public void test(String args) {
System.out.println(args);
}
public static void main(String[] args) {
test("Hello World"); //Strings are always passed between " and ", not ' and '
}
}
现在你的代码应该可以工作了。
答案 10 :(得分:0)
您可以将该代码写入一个方法。
例如:
LinkedList<MyClass> list = new LinkedList<MyClass>();
list.add(instance1);
list.add(instance2);
这就是我在课堂上学到的东西!希望这有帮助!
答案 11 :(得分:0)
您必须为测试方法指定返回类型。
您还必须对字符串使用双引号("
)。单引号('
)可用于字符。
public void test(String args){
System.out.println(args);
}
public static void main(String[] args){
test("Hello World");
}
答案 12 :(得分:-1)
我修复了你的代码:
public class Main {
private void test(String args) {
System.out.println(args);
}
public static void main(String[] args) {
Main TestObject = new Main();
obj.test("Hello World");
}
}
好的,让我们看看为什么你的代码无效:
您的test()
方法有args
作为参数。很好,但你没有说明这个args
变量的类型是什么。 Int
? String
? Char
?你需要定义它。
对于字符串,您应该使用双引号:
String name = "Adam";
对于char,您可以使用单引号:
char key = 'A';
Java是一种面向对象的语言,意味着存在具有状态(变量)的对象,以及它们可以做的事情(方法)。调用test()
方法时,您没有将其从对象中调出。
调用test()
方法后会返回什么?即使它什么都不返回,你也必须写一个返回类型void
。
最后一个提示,当你遇到麻烦时,只需使用一个调试器,然后完成程序中的每一步,看看问题是什么。