Java начинающий "Hello World" - PullRequest
       41

Java начинающий "Hello World"

0 голосов
/ 18 февраля 2011

Я пытаюсь выучить Java.

Я не понимаю, почему этот код не работает.

Не выводит «Hello World» из функции test().

Что я делаю не так?

public class Main {

    public test(args) {
        System.out.println(args);
    }

    public static void main(String[] args) {
        test('Hello World');
    }
}

Ответы [ 13 ]

15 голосов
/ 18 февраля 2011

Во-первых:

public test(args) {
    System.out.println(args);
}

Вам нужен тип, чтобы идти с параметром - Java является строго типизированным языком, и поэтому вам всегда нужно указывать тип. Что касается типа здесь, System.out.println() может на самом деле принимать что угодно, поэтому вы можете установить тип на String, Object или что угодно (поскольку у Object есть метод toString(), и он имеет много перегрузок для обработки всех примитивы.) Имейте в виду, что это необычно, но большинство методов, с которыми вы сталкиваетесь, просто примут что-то определенного типа!

Поскольку здесь вы вызываете test только из основного метода и передаете ему строку, вы можете также установить тип аргументов в String.

Вторая проблема заключается в том, что тип возвращаемого значения не указан. Вам всегда нужно указывать тип возвращаемого значения, в этом случае ничего не возвращается, поэтому тип равен void. Если вы этого не сделаете, компилятор не сможет узнать, что вы написали - это метод или конструктор.

Третья проблема заключается в том, что test - это метод экземпляра, но вы вызываете его статически. test () также должен быть статическим, иначе он принадлежит экземплярам Main, а не классу Main. Почему это важно? Ну, потенциально могут быть тысячи экземпляров Main, так на каком экземпляре должен выполняться метод? Компилятор не может знать.

Далее:

public static void main(String[] args) {
    test('Hello World');
}

Вы передаете здесь строку, которая должна быть в двойных кавычках. Java обрабатывает кавычки иначе, чем PHP, одинарные кавычки используются для односимвольных литералов, а двойные кавычки используются для строк. Таким образом, вы никогда не можете заключить строку в одинарные кавычки, как это, она должна быть двойной.

Собираем все вместе:

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
    }
}
2 голосов
/ 09 октября 2015

создайте object для класса и доступа в методе main или сделайте объявление метода как static

2 голосов
/ 18 февраля 2011

Метод test () имеет синтаксические ошибки

У метода test () отсутствует тип возвращаемого значения и тип аргумента. Измените его, например, на

public void test(String args) {
    System.out.println(args);
}

Неверный синтаксис для «Hello World»

Строки должны быть заключены в двойные кавычки, поэтому измените «Hello World» на «Hello World»

Вы не можете вызвать метод экземпляра из метода класса.

Ваш метод test () является членом экземпляра класса Main, а main () является методом класса. Вам понадобится экземпляр класса Main для вызова test (). например,

public static void main(String[] args) {
        new Main().test("Hello World");
}

Альтернативно, измените test () на метод класса

Вы также можете сделать test () методом класса, чтобы вы могли вызывать его из main ()

public static void test(String args) {
    System.out.println(args);
}
2 голосов
/ 18 февраля 2011

В Java строки всегда используют двойные кавычки, а не одинарные.Это зарезервировано для char типов.

test("Hello World");

Кроме того, ваша тестовая функция не имеет возвращаемого типа (даже не void), и это метод, в то время как main является статическим, так что вы должнынужно создать экземпляр Main или сделать test статичным.Вам также нужно указать тип для каждого аргумента.

Попробуйте это:

public static void test(String args) {
    System.out.println(args);
}
1 голос
/ 18 февраля 2011
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");
}
}
  • Методы в Java имеют тип возврата или void перед своим именем. Например: void в приведенном выше коде.
  • Аргументы метода должны иметь тип данных перед своим именем. Например: строка в приведенном выше коде.
  • Либо вам нужно создать экземпляр вашего класса и вызвать метод с помощью instance.methodName, либо объявить метод как статический и вызвать его с помощью Classname.methodName.
  • В качестве хорошей практики имя вашего класса начинается с заглавной буквы, а имя метода начинается со строчной буквы.
1 голос
/ 18 февраля 2011

сравните с:

public class Main {

    public static void test(String args) {
        System.out.println(args);
    }

    public static void main(String[] args) {
        test("Hello World");
    }
}
0 голосов
/ 22 января 2018

Вы должны указать тип возврата для вашего метода тестирования. Вы также должны использовать двойные кавычки (") для строк. Одиночные кавычки (') могут использоваться для символов.

public void test(String args){
  System.out.println(args);
}

public static void main(String[] args){
  test("Hello World");
}
0 голосов
/ 15 марта 2016

Я исправил твой код:

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");
    }
}

Хорошо, давайте посмотрим, почему ваш код не работал:

  1. Ваш метод test() имеет args в качестве параметра. Отлично, но вы не сказали, каков тип этой args переменной. Int? String? Char? Вы должны определить это.

  2. Для строк следует использовать двойные кавычки:

    String name = "Adam";
    

    Для символа вы должны использовать одинарные кавычки:

    char key = 'A';
    
  3. Java - это объектно-ориентированный язык, то есть объекты с состояниями (переменными) и вещи, которые они могут делать (методы). При вызове метода test() вы не вызывали его для объекта.

  4. Что возвращает метод test() при его вызове? Даже если он ничего не возвращает, вы должны написать тип возврата, void.

Последний совет: когда вы попадаете в беду, просто используйте отладчик и просмотрите каждый шаг вашей программы, чтобы увидеть, в чем проблема.

0 голосов
/ 01 октября 2015

Вы можете написать этот код в один метод.

Например:

class Test {
     public static void main(String[] args){
        System.out.println("Hello, world!");
     }
}

Вот как я узнал об этом в своем классе! Надеюсь, это поможет!

0 голосов
/ 23 июня 2015
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 '
    }
}

Теперь ваш код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...