Java: errore "non-static variable this cannot be referenced from a static context"

di Anonimizzato29133 il
5 risposte
Ho una domanda, come mai non riesco a farmi ritornare la stringa ? E' come se non vedesse il main... chi mi da un suggerimento ?
Grazie.
 public class MyClass {
  
  public static void main (){
      
      String parola = new String ("computer ");
      classe p = new classe();
      String risultato = p.metodo(parola);
      System.out.println(risultato);
      
      
  }
  
  public class classe {
      
      
      public String metodo (String parola1){
          String parola2= new String("fisso");
         String parola12=parola1+parola2;
          
          
          
          return parola12;
      }
      
      
  }
  
  
} 

5 Risposte

  • g.lombardo4 ha scritto:


    Ho una domanda, come mai non riesco a farmi ritornare la stringa ? E' come se non vedesse il main... chi mi da un suggerimento ?
    Innanzitutto il codice così non ti compila neanche, hai scritto un parola12 che non è definito da alcuna parte.
    Poi comunque sappi che il costruttore di String che riceve un String è una delle cose più inutili (non avrebbero neanche dovuto metterlo quel costruttore ma purtroppo c'è).
  • Hai ragione,è stato un errore di distrazione quello... l'ho corretto adesso... ma in ogni caso l'errore di cui parlo nel titolo non riguarda quello.
    Cosa sbaglio ?
  • g.lombardo4 ha scritto:


    Hai ragione,è stato un errore di distrazione quello... l'ho corretto adesso... ma in ogni caso l'errore di cui parlo nel titolo non riguarda quello.
    Cosa sbaglio ?
    Sì l'altra questione è che la classe che hai chiamato "classe" l'hai messa fuori dal main ma dentro MyClass e questo la rende una "inner class", che ha delle regole più particolari. Se non le conosci, evita questo costrutto e definisci "classe" o in un sorgente separato, o nello stesso sorgente di MyClass ma esterna a MyClass (e non public, perché già MyClass è public).

    Ah, il main DEVE essere

    public static void main(String[] args)
  • 
    class classe {        
          public static String metodo (String parola1){
              return parola1 + "fisso";
          }    
    }
    
    public class MyClass{
         public static void main(String[] args){
         	String parola = "computer ";
         	String risultato = classe.metodo(parola);
         	System.out.println(risultato);  
         }
    }
    
  • Va bene, grazie mille per il vostro aiuto, adesso ho capito.
Devi accedere o registrarti per scrivere nel forum
5 risposte