Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Java] Due classi pubbliche in un file .java non compilano

    Salve a tutti, ho iniziato da poco a studiare Java partendo da 0 seguendo il manuale "Java 8" di Claudio De Sio Cesari. Seguendo un esercizio da lui svolto, trovo però un problema, e spero voi mi possiate aiutare. Sotto vi linko il codice, il problema sta nel fatto che ci sono due public class e non capisco perché se salvo il programma "Aritmetia.java" mi dice che il programma deve essere salvato come "Uno.java" e viceversa. Mi spieghereste l'errore?? Grazie anticipatamente a tutti!

    codice:
    public class Aritmetica 
    {
            public int somma(int a, int b)
            {
                   return (a+b);
            }
    }
    
    
            public class Uno
            {
                    public static void main(String args[])
                    {
                        Aritmetica oggetto1 = new Aritmetica();
                        int risultato;
                        risultato = oggetto1.somma(5,6);
                        System.out.println(risultato);
                    }
              }
    Ultima modifica di LeleFT; 10-06-2015 a 08:58 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se hai una classe pubblica Pippo allora DEVE trovarsi in Pippo.java.
    Questo significa che in ogni file java ci può stare al massimo una classe pubblica (di livello più esterno).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Ah ok, la cosa che trovo brutta di questo manuale è che mi sta spiegando cose senza approfondirle. Infatti ancora non sono stati toccati i modificatori.

  4. #4
    Ah ho un'altra piccola domanda. Mi è sembrato di capire che in un programma, nella classe in cui si trova il metodo main non dovrebbero esserci dichiarazioni di nuove variabili o metodi, dico bene?

    (Comunque prima ho dimenticato di ringraziarti, perciò lo faccio adesso. Ho modificato e funziona)

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da francesco. Visualizza il messaggio
    Mi è sembrato di capire che in un programma, nella classe in cui si trova il metodo main non dovrebbero esserci dichiarazioni di nuove variabili o metodi, dico bene?
    No, di per sé è falsa come affermazione. Tecnicamente non ci sono restrizioni/vincoli in tal senso.
    È solo questione di "design" in generale che vuoi realizzare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    No, di per sé è falsa come affermazione. Tecnicamente non ci sono restrizioni/vincoli in tal senso.
    È solo questione di "design" in generale che vuoi realizzare.
    Ciao Andrea, intanto grazie per la risposta
    Comunque avevo capito bene, il manuale diceva che non era un errore, ma era consigliabile fare in questo modo per distinguere l'ambito compilativo da quello esecutivo, comunque grazie della precisazione

  7. #7
    Come ti ha risposto andbin puoi inserire nel main altri metodi ed attributi.

    Un esempio per aiutarti a capire

    codice:
    package test;
    
    
    
    
    
    
    
    
    public class MainSomma
    {
    
    
        private int risultato;
        
    
    
        public int somma(int a, int b)
        {
        return risultato=a+b;
        }
        
        
        /* questo metodo serve a restituire il risultato.
         * E' necessario perche' risultato e' di tipo private
         * e quindi non visibile all'esterno della classe
         * 
         */
        public int getRisultato()
        {
            return risultato;
        }
        
        
        
        public static void main(String args[])
        {
            /* Creo un oggetto t Di tipo MainSomma,
             * che contienete l'attributo risultato e
             * i metodi somma e getRisultato
             */
            MainSomma t= new MainSomma();
            
            int a=5;
            int b=6;
            
            
            t.somma(a,b);
            
            System.out.println(t.getRisultato());
        }
    }
    Anche se sarebbe più pratico creare una classe Somma definita in questo modo:
    codice:
    package test;
    
    
    public class MainSomma
    {
    
    
        private int risultato;
    
    
        public int somma(int a, int b)
        {
        return risultato=a+b;
        }
        
        
        public int getRisultato()
        {
            return risultato;
        }    
     
    }
    Ed una classe Main contenente il metodo main definita in questo modo:
    codice:
    package test;
    
    
    public class Main
    {
        public static void main(String args[])
        {
          
            Somma t= new Somma();
            
            int a=5;
            int b=6;
            
            
            t.somma(a,b);
            
            System.out.println(t.getRisultato());
        }
    }
    Ultima modifica di Roy Mustang; 09-06-2015 a 20:04

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    @francesco. quando posti del codice, inseriscilo all'interno degli appositi tag [CODE] .. [/CODE] così da mantenere formattazione ed indentazione.
    Inoltre, il titolo della discussione deve dare un'idea del contenuto della stessa. Se apri una discussione nel forum "Java" sappiamo già tutti che hai un problema con Java, quindi non serve scriverlo nel titolo.

    Correggo tutto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

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.