Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72

    invalid method declaration; return type required

    Ragazzi...salve a tutti, mi stavo dilettando in un programmino...ma ricevo i seguenti errori

    codice:
    Terra_di_mezzo.java:24: invalid method declaration; return type required
      public razze_tdm (int n){
             ^
    Terra_di_mezzo.java:38: invalid method declaration; return type required
      public classe (int n){
             ^
    Terra_di_mezzo.java:58: invalid method declaration; return type required
      public caratteristiche (String nom, String cogn, String att, String dif, String mag, String intell, String res){
             ^
    ..questo è il programmino

    codice:
    //creazione classe Terra_di_mezzo
    public class Terra_di_mezzo{
     private String regione, re, locazione;
     private razze_tdm [] razze; // arrary di tipo razze_tdm (in realtà è un'altra classe)
    
       
      //definiamo il costruttore della classe Terra_di_mezzo
      public Terra_di_mezzo ( String reg, String r, String loc, int n){
       this.regione = reg;
       this.re= r;
       this.locazione = loc;
       this.razze = new razze_tdm [n];
      }
      
      //creazione della classe razze_tdm
      public class razze_tdm {
        private classe [] umani;
        private classe [] elfi;
        private classe [] nani;
        private classe [] orchetti;
      }
        
      //definiamo il costruttore della classe razze_tdm
      public razze_tdm (int n){
       this.umani = new classe [n];
       this.elfi= new classe [n];
       this.nani = new classe [n];
       this.orchi = new classe [n];
      }
        
        //creazione della classe Classe []
        public class classe{
          private caratteristiche [] guerrieri;
          private caratteristiche [] maghi;
        }
        
        //definiamo il costruttore della classe Classe
      public classe (int n){
      this.guerrieri = new caratteristiche [n];
      this.maghi= new caratteristiche [n];
      }
      
        
        //creazione classe caratteristiche
        
        public class caratteristiche{
          private String nome;
          private String cognome;
          private String attacco;
          private String difesa;
          private String magia;
          private String intelliggenza;
          private String resistenza;
        }
        
        //definiamo il costruttore della classe caratteristiche
        
      public caratteristiche (String nom, String cogn, String att, String dif, String mag, String intell, String res){
       this.nome = nom;
       this.cognome= cogn;
       this.attacco = att;
       this.difesa = dif;
       this.magia= mag;
       this.intelligenza = intell;
       this.resistenza = res;
      }
    }
    voi che dite?
    salute a tutti! e grazie!

  2. #2
    Devi mettere i costruttori delle classi interne all'interno delle classi stesse... credo sia quello il problema

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    2
    Innanzitutto stai dichiarando delle classi all'interno di un'altra classe, la cosa è fattibile in Java, ma ti sconsiglio di farlo se non sai davvero cosa stai facendo!
    la struttra dovrebbe essere questa:
    public class Classe1 {
    private String xxx; // Attributi classe 1
    public Classe1() {
    // Costruttore classe 1
    }
    //metodi classe 1
    }
    public class Classe2 {
    private String xxx; // Attributi classe 2
    public Classe2() {
    // Costruttore classe 2
    }
    //metodi classe 2
    }

    Riguardo all'errore che ottieni è causato dal fatto che i costruttori delle classi annidate sono all'esterno delle stesse, esempio:
    //creazione della classe razze_tdm
    public class razze_tdm {
    private classe [] umani;
    private classe [] elfi;
    private classe [] nani;
    private classe [] orchetti;
    }

    //definiamo il costruttore della classe razze_tdm
    public razze_tdm (int n){
    this.umani = new classe [n];
    this.elfi= new classe [n];
    this.nani = new classe [n];
    this.orchi = new classe [n];
    }

    Che invece dovrebbe essere
    //creazione della classe razze_tdm
    public class razze_tdm {
    private classe [] umani;
    private classe [] elfi;
    private classe [] nani;
    private classe [] orchetti;

    //definiamo il costruttore della classe razze_tdm
    public razze_tdm (int n){
    this.umani = new classe [n];
    this.elfi= new classe [n];
    this.nani = new classe [n];
    this.orchi = new classe [n];
    }
    }

    spero si noti la differenza.
    A causa del posizionamento errato il compilatore non li interpreta come costruttori delle classi annidate, ma come metodi della classe principale (Terra_di_mezzo), ma essendo mancanti della tipologia da restituire non hanno una firma valida.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    72
    esatto ho risolto!!!
    Ti ringrazio Pinzo!!!
    Oltre a dover distribuire bene le {} includendo i costruttori nelle classi...

    ho dovuto anche usare classi in file diversi..che scemo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.