Ошибка return type required

As you can see, the code public Circle(double r)…. how is that
different from what I did in mine with public CircleR(double r)? For
whatever reason, no error is given in the code from the book, however
mine says there is an error there.

When defining constructors of a class, they should have the same name as its class.
Thus the following code

public class Circle
{ 
    //This part is called the constructor and lets us specify the radius of a  
    //particular circle. 
  public Circle(double r) 
  { 
   radius = r; 
  }
 ....
} 

is correct while your code

public class Circle
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public diameter()
    {
       double d = radius * 2;
       return d;
    }
}

is wrong because your constructor has different name from its class. You could either follow the same code from the book and change your constructor from

public CircleR(double r) 

to

public Circle(double r)

or (if you really wanted to name your constructor as CircleR) rename your class to CircleR.

So your new class should be

public class CircleR
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public double diameter()
    {
       double d = radius * 2;
       return d;
    }
}

I also added the return type double in your method as pointed out by Froyo and John B.

Refer to this article about constructors.

HTH.

Жалуется
invalid method declaration; return type required:
Solution.java, line: 28, column: 19
Спасибо заранее

package com.javarush.task.task05.task0507;
import java.io.*;

/*
Среднее арифметическое
*/

public class Solution {
    public static void main(String[] args) throws Exception {


  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        double sum = 0.0;
        boolean check = false;
 int b=0;
     while (!check)
     {
     int a=Integer.parseInt(reader.readLine());

    fight(a)=b;
     sum+=b/2;

      check=(a==-1);
    }
     System.out.println(sum);
        //напишите тут ваш код
    }
    public static fight(int c) {
        if (c<0)
        {
        return -c;
        }
        else
        {
        return c;
        }
    }

}

In this post, we will see how to resolve invalid method declaration; return type required.

There can be multiple reasons for invalid method declaration; return type required issue.

Table of Contents

  • Missing method return type
    • Solution
  • Missing comma in enum
    • Solution
  • Using different name for constructor
    • Solution

Missing method return type

It is quite clear from error message that you are missing return type of the method. If you don’t want to return anything from the method, then you should set it’s return type of void.

Let’s understand with the help of example:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package org.arpit.java2blog;

public class Employee {

    String name;

    int age;

    public Employee(String name) {

        this.name = name;

    }

    public setEmployeeDetails(String name,int age)

    {

        this.name=name;

        this.age=age;

    }

}

You will get compilation error at line 13 with error invalid method declaration; return type required.

Solution

In method setEmployeeDetails(), we did not specified return type. If it is not returning anything then its return type should be void.

Let’s change following line
public setEmployeeDetails(String name,int age)
to
public void setEmployeeDetails(String name,int age)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

package org.arpit.java2blog;

public class Employee {

    String name;

    int age;

    public Employee(String name) {

        this.name = name;

    }

    public void setEmployeeDetails(String name,int age)

    {

        this.name=name;

        this.age=age;

    }

}

Above code should compile fine now.

Missing comma in enum

This might sound strange but you can get this error when you are missing comma between enum type.

Let’s see with the help of example:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package org.arpit.java2blog;

public enum Number {

        One(1);

        Two(2);

    private final int num;

    Number(int i) {;

        this.num=i;

    }

    public int getNumber() {

        return num;

    }

}

C:UsersArpitDesktop>javac Number.java
Number.java:6: error: invalid method declaration; return type required
Two(2);
^
Number.java:6: error: illegal start of type
Two(2);
^
2 errors

Solution

If you notice enum types are not separated by the comma and this is the reason for this error.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

package org.arpit.java2blog;

public enum Number {

        One(1),

        Two(2);

    private final int num;

    Number(int i) {;

        this.num=i;

    }

    public int getNumber() {

        return num;

    }

}

C:UsersArpitDesktop>javac Number.java

C:UsersArpitDesktop>

As you can see error is resolved now.

Using different name for constructor

As you might know that constructor name should be same as class name in java. You might have put different name in constructor.
Let’s understand with the help of example:

package org.arpit.java2blog;

public class Employee {

    String name;

    int age;

    public EmployeeN(String name) {

        this.name = name;

    }

}

You will get compilation error at line 9 with error invalid method declaration; return type required.

Solution

As you can see, constructor name is different than class name.
Let’s change following line
public EmployeeN(String name) {
to
public Employee(String name) {
This will fix compilation error.

That’s all about invalid method declaration; return type required in java.

Invalid method declaration; return type required error might occur when you don’t specify a return type for your method or misspell the class constructor. If you aren’t sure about the cause in your program, this article will help you figure it out.Fix the error invalid method declaration return type required

Here, you’ll gain enough details about the given error and learn the ways to fix the same. So, begin reading to see how you can make the above error statement fly away from your screen.

Contents

  • What Causes the Invalid Method Declaration; Return Type Required?
    • – A Missing Return Type in the Method Declaration
    • – Your Class Constructor Is Misspelled
  • Resolving the Invalid Method Declaration; Return Type Required Error
    • – Specify the Return Type of Your Method
    • – Give Your Constructor the Same Name As Your Class
  • FAQ
    • 1. What Is Invalid Variable Declaration in Java?
    • 2. How Would You Explain the Error: ‘;’ Expected?
    • 3. What Does the Error: Cannot Find Symbol Tell?
    • 4. How To Check the Return Type of an Already Declared Method?
    • 5. Is It Possible To Assign Two Return Types To a Single Method?
  • Conclusion
  • References

Declaring a class method without a return type or creating a misspelt class constructor causes the return type for the method is missing error. The causes relate to Java’s basic concept of method and constructor declaration so, you’ll be able to find it out soon.

– A Missing Return Type in the Method Declaration

A method declaration specifies an access modifier, return type, and name of the method followed by parentheses with or without parameters. Now, if you skip the return type in the method declaration, the invalid method declaration error will remind you about it.

For example, you want to create a public method “say” that prints a statement like “The method is called!”

Therefore, you have specified the public access modifier followed by “say” to be the method’s name, which is further followed by empty parentheses. Next, you have created the method body using the curly brackets with the print() method called between them.

Once you run your above-described code, you’ll get an error complaining that the return type is required.

You can see the following code snippet to understand the scenario.

public class Colors{
public say()
{
System.out.print(“The method is called!”);
}
}

– Your Class Constructor Is Misspelled

The class constructor doesn’t require a return type. However, if your class constructor is misspelt, the Java compiler will treat it as an ordinary method. Consequently, it will indicate the requirement of a return type for method declaration through the Java error.

Imagine a situation where the name of your class is “employees,” but you have created the constructor with the “employee” name.What causes the invalid method declaration return type required

Here, although the difference between the class and constructor names comprises a single letter only, the compiler will consider it an employee method instead of the class constructor. Eventually, the error under discussion will appear on your screen.

Please refer to the below code snippet for more clarity.

public class employees {
public int id;
public string name;
public int salary;
public employee (int id, string name, int salary){
this.id = id;
this.name = name;
this.salary = salary;
}
}

Resolving the Invalid Method Declaration; Return Type Required Error

You can resolve the error under consideration by specifying a return type for your method or ensuring that the constructor’s name is exactly the same as the class name. It will help the compiler declare a method or identify a constructor, leading to the removal of the error.

– Specify the Return Type of Your Method

It would be best to specify the return type of your method to make the error go away from your computer. As informed earlier, a return type is required between the access modifier and the name of the method. Once you fulfill the requirement, the same error will fly away.

Remember that the return type can be void, int, string, double, float, or any other data type that comes to your mind. You have to specify it according to the type of value returned by your method, which is indicated by the return statement. If your method performs a task but doesn’t return any value, the return type should be set to void.

Simply put, if your method uses a return statement at the end of its body, you’ll have to specify the return type based on the type of value. However, if the method body doesn’t use the return statement and returns nothing, the void return type will handle the situation.

Consider having a calculator class in your coding file. Plus, you have declared a public subtract method that accepts two integer type arguments. Next, the same method prints the subtraction result of the two numbers passed to it.

In this case, the return type of the subtract method must be set to void because of the absence of the return statement.

Here is the block of code that shows the given example situation.

public class calculator {
public void subtract(int x, int y){if( x > y){
int z = x – y;
}
else{
int z = y – x;
}
System.out.println(“The subtraction result is” + z + “.”);
}
}

Now, think about having a public multiply method in the above class. The given method also accepts two integers, like the subtract method. Next, it uses the return statement to provide you with the multiplication result of the two numbers passed to it. In such a scenario, you’ll have to set the return type of the multiply method to int.

You can see the code for the multiply method below:

public int multiply(int a, int b){
int c = a * b;
return c;
}

– Give Your Constructor the Same Name As Your Class

You should assign the same name to your constructor as the class name to eliminate the stated error. This way, the compiler will know that it is a constructor, not an ordinary method, and it won’t put forward the demand for a return type.

A good way to avoid the compiler’s misunderstanding and have the correct name for the constructor is to copy and paste the class name. So, neither you’ll type, nor you’ll misspell the constructor name.Resolving the invalid method declaration return type required error

Please have a look at the coding representation showing a perfect constructor:

public class newEmployee{
public string firstName;
public string lastName;
public int age;
public string designation;
public newEmployee (string firstName, string lastName, int age; string designation){
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.designation = designation;
}
}

Keep in mind that the type of the constructor doesn’t matter while you follow the basic rules of its declaration and definition. Be it a default constructor or a parameterized one, you must give it the same class name. Plus, you don’t have to specify its return type in any case.

You can see a default constructor of the books class below, which will assign some initial values to the author and bookName fields.

public books{
public string author;
public string bookName;
public books(){
this.author = “Anonymous”;
this.bookName = “Sample Book”;
}}

FAQ

1. What Is Invalid Variable Declaration in Java?

The invalid variable declaration error suggests that the variable’s name contains invalid characters or starts with a digit. You must know that a Java variable name can only have A-Z, a-z, 0-9, underscore “_,” and a dollar “$” sign. Spaces are strictly prohibited in such declarations.

2. How Would You Explain the Error: ‘;’ Expected?

The ‘;’ error warns that your code is missing a semicolon used at the end of each code statement. The symbol marks the end of the code statement to inform the compiler where your statement ends. You can fix the error seamlessly by adding the necessary semicolons to your file.

3. What Does the Error: Cannot Find Symbol Tell?

The cannot find symbol error tells you that the compiler couldn’t find an identifier, such as a variable name, in your program. You might receive the same error while using a variable name before defining it. Thus, it would be best to define an identifier before using it.

4. How To Check the Return Type of an Already Declared Method?

You can check the return type of an already declared method by calling the getReturnType() method of the Method class. The given method will provide you with a Class object representing the return type of your required method specified in the method declaration.

5. Is It Possible To Assign Two Return Types To a Single Method?

No, it is not possible to specify two return types for a single method. A method can return only a particular type of value after completing its operation. Hence, it wouldn’t be even possible to return two values from the method simultaneously.

Conclusion

The invalid method declaration; return type required error indicates the absence of method return type in the method’s declaration. The return type of a method is critical to tell the compiler about the data returned by the same. Here you go with some important details from the article that’ll help you fight against the given error:

  • Add a return type of your method after its access modifier in the method declaration to remove the error.
  • If the method doesn’t contain a return statement, you should set its return type to void.
  • The return type of a method reflects the type of data returned by the same method.
  • Ensure to have a constructor with the same name as the class name to eliminate the error.
  • A constructor doesn’t require a return type.

We are confident that this guide would have helped you in understanding the cause of the stated error and learn to deal with it like a Java expert even if you are just starting.

References

https://stackoverflow.com/questions/15698239/java-invalid-method-declaration-return-type-required

  • Author
  • Recent Posts

Position is Everything

Your Go-To Resource for Learn & Build: CSS,JavaScript,HTML,PHP,C++ and MYSQL. Meet The Team

Position is Everything

оригинал:50 Common Java Errors and How to Avoid Them (Part 1)
Автор:Angela Stringfellow
перевод: Гусь напуган

Примечание переводчика: в этой статье представлены 20 распространенных ошибок компилятора Java. Каждая ошибка включает фрагменты кода, описания проблем и предоставляет ссылки по теме, которые помогут вам быстро понять и решить эти проблемы. Ниже приводится перевод.

При разработке программного обеспечения Java вы можете столкнуться со многими типами ошибок, но большинства из них можно избежать. Мы тщательно отобрали 20 наиболее распространенных ошибок программного обеспечения Java, включая примеры кода и руководства, которые помогут вам решить некоторые распространенные проблемы с кодированием.

Чтобы получить дополнительные советы и рекомендации по написанию программ на Java, вы можете загрузить наш «Comprehensive Java Developer’s Guide«Эта книга содержит все, что вам нужно, от всевозможных инструментов до лучших веб-сайтов и блогов, каналов YouTube, влиятельных лиц в Twitter, групп в LinkedIn, подкастов, мероприятий, которые необходимо посетить, и многого другого.

Если вы используете .NET, прочтите нашРуководство по 50 наиболее распространенным программным ошибкам .NETЧтобы избежать этих ошибок. Но если ваша текущая проблема связана с Java, прочтите следующую статью, чтобы понять наиболее распространенные проблемы и способы их решения.

Ошибка компилятора

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

1. “… Expected”

Эта ошибка возникает, когда в коде чего-то не хватает. Обычно это происходит из-за отсутствия точки с запятой или закрывающей скобки.

private static double volume(String solidom, double alturam, double areaBasem, double raiom) {
double vol;
    if (solidom.equalsIgnoreCase("esfera"){
        vol=(4.0/3)*Math.pi*Math.pow(raiom,3);
    }
    else {
        if (solidom.equalsIgnoreCase("cilindro") {
            vol=Math.pi*Math.pow(raiom,2)*alturam;
        }
        else {
            vol=(1.0/3)*Math.pi*Math.pow(raiom,2)*alturam;
        }
    }
    return vol;
}

Обычно это сообщение об ошибке не указывает точное местонахождение проблемы. Чтобы найти проблему, вам необходимо:

  • Убедитесь, что все открывающие скобки имеют соответствующие закрывающие скобки.
  • Посмотрите на код перед строкой, обозначенной ошибкой. Эта ошибка обычно обнаруживается компилятором в более позднем коде.
  • Иногда некоторые символы (например, открывающая скобка) не должны быть первыми в коде Java.

Примеры:Ошибка из-за отсутствия скобок。

2. “Unclosed String Literal”

Если в конце строки отсутствует кавычка, создается сообщение об ошибке «Незамкнутый строковый литерал», и это сообщение отображается в строке, где произошла ошибка.

 public abstract class NFLPlayersReference {
    private static Runningback[] nflplayersreference;
    private static Quarterback[] players;
    private static WideReceiver[] nflplayers;
    public static void main(String args[]){
    Runningback r = new Runningback("Thomlinsion");
    Quarterback q = new Quarterback("Tom Brady");
    WideReceiver w = new WideReceiver("Steve Smith");
    NFLPlayersReference[] NFLPlayersReference;
        Run();// {
        NFLPlayersReference = new NFLPlayersReference [3];
        nflplayersreference[0] = r;
        players[1] = q;
        nflplayers[2] = w;
            for ( int i = 0; i < nflplayersreference.length; i++ ) {
            System.out.println("My name is " + " nflplayersreference[i].getName());
            nflplayersreference[i].run();
            nflplayersreference[i].run();
            nflplayersreference[i].run();
            System.out.println("NFL offensive threats have great running abilities!");
        }
    }
    private static void Run() {
        System.out.println("Not yet implemented");
    }     
}

Обычно эта ошибка возникает в следующих ситуациях:

  • Строка не заканчивается кавычками. Это легко изменить, просто заключите строку в указанные кавычки.
  • Строка превышает одну строку. Длинную строку можно разделить на несколько коротких строк и соединить знаком плюс («+»).
  • Кавычки, являющиеся частью строки, не экранируются обратной косой чертой («»).

Прочтите эту статью:Сообщение об ошибке незакрытой строки。

3. “Illegal Start of an Expression”

Есть много причин для ошибки «Незаконное начало выражения». Это стало одним из наименее полезных сообщений об ошибках. Некоторые разработчики думают, что это вызвано плохим запахом кода.

Обычно выражение создается для генерации нового значения или присвоения значений другим переменным. Компилятор ожидает найти выражение, но посколькуГрамматика не оправдывает ожиданийВыражение не найдено. Эту ошибку можно найти в следующем коде.

} // добавляем сюда
       public void newShape(String shape) {
        switch (shape) {
            case "Line":
                Shape line = new Line(startX, startY, endX, endY);
            shapes.add(line);
            break;
                case "Oval":
            Shape oval = new Oval(startX, startY, endX, endY);
            shapes.add(oval);
            break;
            case "Rectangle":
            Shape rectangle = new Rectangle(startX, startY, endX, endY);
            shapes.add(rectangle);
            break;
            default:
            System.out.println("ERROR. Check logic.");
        }
        }
    } // удаляем отсюда
    }

Прочтите эту статью:Как устранить ошибки «неправильное начало выражения»。

4. “Cannot Find Symbol”

Это очень распространенная проблема, потому что все идентификаторы в Java должны быть объявлены до их использования. Эта ошибка возникает из-за того, что компилятор не понимает значения идентификатора при компиляции кода.

cannot-find-symbol-error-screenshot-11495

Сообщение об ошибке «Не удается найти символ» может иметь множество причин:

  • Написание объявления идентификатора может не соответствовать написанию, используемому в коде.
  • Переменная никогда не объявлялась.
  • Переменная не объявлена ​​в той же области видимости.
  • Никакие классы не импортируются.

Прочтите эту статью:Обсуждение ошибки «не удается найти символ»。

5. “Public Class XXX Should Be in File”

Если класс XXX и имя файла программы Java не совпадают, будет сгенерировано сообщение об ошибке «Открытый класс XXX должен быть в файле». Только когда имя класса и имя файла Java совпадают, код может быть скомпилирован.

package javaapplication3;  
  public class Robot {  
        int xlocation;  
        int ylocation;  
        String name;  
        static int ccount = 0;  
        public Robot(int xxlocation, int yylocation, String nname) {  
            xlocation = xxlocation;  
            ylocation = yylocation;  
            name = nname;  
            ccount++;         
        } 
  }
  public class JavaApplication1 { 
    public static void main(String[] args) {  
        robot firstRobot = new Robot(34,51,"yossi");  
        System.out.println("numebr of robots is now " + Robot.ccount);  
    }
  }

Чтобы решить эту проблему, вы можете:

  • Назовите класс и файл с тем же именем.
  • Убедитесь, что два имени всегда совпадают.

Прочтите эту статью:Примеры ошибки «Открытый класс XXX должен быть в файле»。

6. “Incompatible Types”

«Несовместимые типы» — это логические ошибки, которые возникают, когда операторы присваивания пытаются сопоставить типы переменных и выражений. Обычно эта ошибка возникает при присвоении строки целому числу и наоборот. Это не синтаксическая ошибка Java.

test.java:78: error: incompatible types
return stringBuilder.toString();
                             ^
required: int
found:    String
1 error

Когда компилятор выдает сообщение «несовместимые типы», решить эту проблему действительно непросто:

  • Используйте функции преобразования типов.
  • Разработчикам может потребоваться изменить исходные функции кода.

Взгляните на этот пример:Присвоение строки целому числу приведет к ошибке «несовместимые типы».。

7. “Invalid Method Declaration; Return Type Required”

Это сообщение об ошибке означает, что тип возвращаемого значения метода не объявлен явно в объявлении метода.

public class Circle
{
    private double radius;
    public CircleR(double r)
    {
        radius = r;
    }
    public diameter()
    {
       double d = radius * 2;
       return d;
    }
}

Есть несколько ситуаций, которые вызывают ошибку «недопустимое объявление метода; требуется тип возвращаемого значения»:

  • Забыл объявить тип.
  • Если метод не имеет возвращаемого значения, вам необходимо указать «void» в качестве возвращаемого типа в объявлении метода.
  • Конструктору не нужно объявлять тип. Однако, если в имени конструктора есть ошибка, компилятор будет рассматривать конструктор как метод без указанного типа.

Взгляните на этот пример:Проблема именования конструктора вызывает проблему «недопустимое объявление метода; требуется тип возвращаемого значения».。

8. “Method in Class Cannot Be Applied to Given Types”

Это сообщение об ошибке более полезно, оно означает, что метод был вызван с неправильными параметрами.

RandomNumbers.java:9: error: method generateNumbers in class RandomNumbers cannot be applied to given types;
generateNumbers();

required: int[]

found:generateNumbers();

reason: actual and formal argument lists differ in length

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

Это обсуждение иллюстрируетОшибки Java, вызванные несовместимостью объявлений методов и параметров в вызовах методов。

9. “Missing Return Statement”

Когда в методе отсутствует оператор возврата, выдается сообщение об ошибке «Отсутствует оператор возврата». Метод с возвращаемым значением (тип, не являющийся недействительным) должен иметь оператор, который возвращает значение, чтобы значение можно было вызвать вне метода.

public String[] OpenFile() throws IOException {
    Map<String, Double> map = new HashMap();
    FileReader fr = new FileReader("money.txt");
    BufferedReader br = new BufferedReader(fr);
    try{
        while (br.ready()){
            String str = br.readLine();
            String[] list = str.split(" ");
            System.out.println(list);               
        }
    }   catch (IOException e){
        System.err.println("Error - IOException!");
    }
}

Есть несколько причин, по которым компилятор выдает сообщение «отсутствует оператор возврата»:

  • Оператор возврата был опущен по ошибке.
  • Метод не возвращает никакого значения, но тип не объявлен как недействительный в объявлении метода.

пожалуйста, проверьтеКак устранить ошибку «отсутствует отчет о возврате»Это пример.

10. “Possible Loss of Precision”

Когда информация, присвоенная переменной, превышает верхний предел, который может нести переменная, выдается ошибка «Возможная потеря точности». Как только это произойдет, часть информации будет отброшена. Если это не проблема, переменную следует явно объявить в коде как новый тип.

possible-loss-of-precision-error-11501

Ошибка «возможная потеря точности» обычно возникает в следующих ситуациях:

  • Попробуйте присвоить переменной целочисленного типа действительное число.
  • Попробуйте присвоить данные типа double переменной целочисленного типа.

Основные типы данных в JavaОбъясняет характеристики различных типов данных.

11. “Reached End of File While Parsing”

Это сообщение об ошибке обычно появляется, когда в программе отсутствует закрывающая фигурная скобка («}»). Иногда эту ошибку можно быстро исправить, добавив закрывающую скобку в конце кода.

public class mod_MyMod extends BaseMod
public String Version()
{
     return "1.2_02";
}
public void AddRecipes(CraftingManager recipes)
{
   recipes.addRecipe(new ItemStack(Item.diamond), new Object[] {
      "#", Character.valueOf('#'), Block.dirt
   });
}

Приведенный выше код приведет к следующей ошибке:

java:11: reached end of file while parsing }

Инструменты кодирования и правильные отступы кода могут упростить поиск этих несоответствующих фигурных скобок.

Прочтите эту статью:Отсутствие фигурных скобок вызовет сообщение об ошибке «достигнут конец файла при синтаксическом анализе».。

12. “Unreachable Statement”

Когда оператор появляется в месте, где он не может быть выполнен, выдается ошибка «Недоступный оператор». Обычно это делается после оператора break или return.

for(;;){
   break;
   ... // unreachable statement
}
int i=1;
if(i==1)
  ...
else
  ... // dead code

Обычно эту ошибку можно исправить, просто переместив оператор return. Прочтите эту статью:Как исправить ошибку «Недостижимый отчет»。

13. “Variable Might Not Have Been Initialized”

Если локальная переменная, объявленная в методе, не инициализирована, возникнет такая ошибка. Такая ошибка возникает, если вы включаете переменную без начального значения в оператор if.

int x;
if (condition) {
    x = 5;
}
System.out.println(x); // x не может быть инициализирован

Прочтите эту статью:Как избежать появления ошибки «Возможно, переменная не была инициализирована»。

14. “Operator … Cannot be Applied to ”

Эта проблема возникает, когда оператор действует с типом, который не входит в область его определения.

operator < cannot be applied to java.lang.Object,java.lang.Object

Эта ошибка часто возникает, когда код Java пытается использовать строковые типы в вычислениях (вычитание, умножение, сравнение размеров и т. Д.). Чтобы решить эту проблему, вам необходимо преобразовать строку в целое число или число с плавающей запятой.

Прочтите эту статью:Почему нечисловые типы вызывают ошибки программного обеспечения Java。

15. “Inconvertible Types”

Когда код Java пытается выполнить недопустимое преобразование, возникает ошибка «Неконвертируемые типы».

TypeInvocationConversionTest.java:12: inconvertible types
found   : java.util.ArrayList<java.lang.Class<? extends TypeInvocationConversionTest.Interface1>>
required: java.util.ArrayList<java.lang.Class<?>>
    lessRestrictiveClassList = (ArrayList<Class<?>>) classList;
                                                     ^

Например, логические типы нельзя преобразовать в целые числа.

Прочтите эту статью:Как преобразовывать неконвертируемые типы в программном обеспечении Java。

16. “Missing Return Value”

Если оператор возврата содержит неверный тип, вы получите сообщение «Отсутствует возвращаемое значение». Например, посмотрите на следующий код:

public class SavingsAcc2 {
    private double balance;
    private double interest;
    public SavingsAcc2() {
        balance = 0.0;
        interest = 6.17;
    }
    public SavingsAcc2(double initBalance, double interested) {
        balance = initBalance;
        interest = interested;
    }
    public SavingsAcc2 deposit(double amount) {
        balance = balance + amount;
        return;
    }
    public SavingsAcc2 withdraw(double amount) {
        balance = balance - amount;
        return;
    }
    public SavingsAcc2 addInterest(double interest) {
        balance = balance * (interest / 100) + balance;
        return;
    }
    public double getBalance() {
        return balance;
    }
}

Возвращается следующая ошибка:

SavingsAcc2.java:29: missing return value 
return; 
^ 
SavingsAcc2.java:35: missing return value 
return; 
^ 
SavingsAcc2.java:41: missing return value 
return; 
^ 
3 errors

Обычно эта ошибка возникает из-за того, что оператор return ничего не возвращает.

Прочтите эту статью:Как избежать ошибки «Отсутствует возвращаемое значение»。

17. “Cannot Return a Value From Method Whose Result Type Is Void”

Эта ошибка Java возникает, когда метод void пытается вернуть какое-либо значение, например, в следующем коде:

public static void move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
    return userMove;
}
public static void usersMove(String playerName, int gesture)
{
    int userMove = move();
    if (userMove == -1)
    {
        break;
    }

Обычно эту проблему может решить изменение типа возвращаемого значения метода, чтобы он соответствовал типу в операторе возврата. Например, следующий void можно изменить на int:

public static int move()
{
    System.out.println("What do you want to do?");
    Scanner scan = new Scanner(System.in);
    int userMove = scan.nextInt();
    return userMove;
}

Прочтите эту статью:Как исправить ошибку «Невозможно вернуть значение из метода, тип результата которого недействителен»。

18. “Non-Static Variable … Cannot Be Referenced From a Static Context”

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

public class StaticTest {
    private int count=0;
    public static void main(String args[]) throws IOException {
        count++; //compiler error: non-static variable count cannot be referenced from a static context
    }
}

Чтобы устранить ошибку «Нестатическая переменная… На нее нельзя ссылаться из статического контекста», можно сделать две вещи:

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

Пожалуйста, прочтите это руководство:Разница между статическими и нестатическими переменными。

19. “Non-Static Method … Cannot Be Referenced From a Static Context”

Эта проблема возникает, когда код Java пытается вызвать нестатический метод в статическом классе. Например, такой код:

class Sample
{
   private int age;
   public void setAge(int a)
   {
      age=a;
   }
   public int getAge()
   {
      return age;
   }
   public static void main(String args[])
   {
       System.out.println("Age is:"+ getAge());
   }
}

Вызовет эту ошибку:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Cannot make a static reference to the non-static method getAge() from the type Sample

Чтобы вызвать нестатический метод в статическом методе, необходимо объявить экземпляр класса вызываемого нестатического метода.

Прочтите эту статью:Разница между нестатическими и статическими методами。

20. “(array) Not Initialized”

Если массив был объявлен, но не инициализирован, вы получите сообщение об ошибке типа «(массив) не инициализирован». Длина массива фиксирована, поэтому каждый массив необходимо инициализировать требуемой длиной.

Следующий код правильный:

AClass[] array = {object1, object2}

это тоже нормально:

AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;

Но это не так:

AClass[] array;
...
array = {object1, object2};

Прочтите эту статью:О том, как инициализировать массив в Java。

Продолжение следует

Сегодня мы обсуждали ошибки компилятора, в следующий раз мы обсудим различные исключения времени выполнения, которые могут возникнуть. Как и структура этой статьи, в следующий раз она будет содержать фрагменты кода, пояснения и ссылки по теме, которые помогут вам исправить код как можно скорее.

Like this post? Please share to your friends:
  • Ошибка retrying public
  • Ошибка restricted performance jaguar xf
  • Ошибка restartmanager 10010
  • Ошибка rest api wordpress
  • Ошибка response python