Проблема с созданием экземпляра класса в скриптлете - PullRequest
1 голос
/ 14 июля 2020

Когда я хочу создать экземпляр класса или использовать метод класса c stati, я получаю сообщение об ошибке на веб-странице. Здесь я покажу вам, что происходит:

Я создал этот супер простой класс, чтобы показать проблему:

package CalculosMatematicos;

public class calculos {
    
    public static int resultado;
    
    public static int metodoSuma(int num1, int num2){
        
        resultado = num1 + num2;
        return resultado;
    }
    
    public static int metodoResta(int num1, int num2){
        
        resultado = num1 - num2;
        return resultado;
    }
    
    public static int metodoMultiplicar(int num1, int num2){
        
        resultado = num1 * num2;
        return resultado;
    }
    
    public static int metodoDividirf(int num1, int num2){
        
        resultado = num1 / num2;
        return resultado;
    }
    
}

В JSP я написал:

<%@page import="CalculosMatematicos.*"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        La suma de 7 + 5 es: <%= calculos.metodoSuma(7,5)%>
    </body>
</html>

Ошибка такая:

https://i.stack.imgur.com/aQDCF.png

1 Ответ

0 голосов
/ 14 июля 2020

Сам класс должен быть stati c, в противном случае вам нужно создать новый объект типа calculos

, чтобы дать немного больше пояснений из https://www.geeksforgeeks.org/static-class-in-java/

 // Static nested class 
    public static class NestedStaticClass { 


    // Only static members of Outer class 
    // is directly accessible in nested 
    // static class 
    public void printMessage() 
    { 

        // Try making 'message' a non-static 
        // variable, there will be compiler error 
        System.out.println( 
            "Message from nested static class: "
            + msg); 
    } 
} 

Итак, ваш класс должен иметь c статус, потому что вы не создали его экземпляр. Так что либо сделайте основной класс статическим c, либо создайте экземпляр нестатического c класса перед использованием.

package CalculosMatematicos;

public static class calculos {
    
    public static int resultado;
    
    public static int metodoSuma(int num1, int num2){
        
        resultado = num1 + num2;
        return resultado;
    }
    
    public static int metodoResta(int num1, int num2){
        
        resultado = num1 - num2;
        return resultado;
    }
    
    public static int metodoMultiplicar(int num1, int num2){
        
        resultado = num1 * num2;
        return resultado;
    }
    
    public static int metodoDividirf(int num1, int num2){
        
        resultado = num1 / num2;
        return resultado;
    }
    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...