Errore static

di il
6 risposte

Errore static

Buongiorno,
Ho fatto un piccolo programma, che calcola i secondi e i giorni di una persona.
Ho due file, Person.java e calculateAge.java li posto in seguito.
Compilo il primo file da prompt e non da nessun problema, ma quando compilo il secondo mi da 2 errori:
illegal start of expression static ageDays
illegal start of expression static ageSeconds
public class Person {
	public int ageYears;
	public int ageDays;
	public int ageSeconds;

	Person(int ageYears, int ageDays,int ageSeconds){
		this.ageYears = ageYears;
		this.ageDays = ageDays;
		this.ageSeconds = ageSeconds;
	}

	public void stamp() {
		System.out.println("You are" + ageDays + "days old");
		System.out.println("You are" + ageSeconds + "seconds old");

	}
}


public class calculateAge {

	public static void main(String[] args) {
		static ageDays = ageYears * 365;
	 	static ageSeconds = ageDays * 24 * 60 * 60;
		Person m = new Person(ageYears, ageDays, ageSeconds);
		m.stamp();
	}
}

6 Risposte

  • Re: Errore static

    manuel__89 ha scritto:


    static ageDays = ageYears * 365;
    static ageSeconds = ageDays * 24 * 60 * 60;
    Le variabili locali NON possono essere marcate static. L'unico modificatore applicabile è final.
  • Re: Errore static

    Le ho spostate nel primo file sorgente, ma da lo stesso errore
    public class Person {
       public static int ageYears;
       public static int ageDays;
       public static int ageSeconds;
    
       Person(int ageYears, int ageDays,int ageSeconds){
          this.ageYears = ageYears;
          this.ageDays = ageDays;
          this.ageSeconds = ageSeconds;
       }
    
       public void stamp() {
          System.out.println("You are" + ageDays + "days old");
          System.out.println("You are" + ageSeconds + "seconds old");
    
       }
    }
    
    dichiarandole int nel secondo file
  • Re: Errore static

    Cmq devi dichiararle..

    Di che tipo è ageDays nel tuo codice qui sotto? e ageSeconds? e ageYears?
    Immagino che siano di tipo int
    
    public class calculateAge {
    
       public static void main(String[] args) {
          static ageDays = ageYears * 365;
           static ageSeconds = ageDays * 24 * 60 * 60;
          Person m = new Person(ageYears, ageDays, ageSeconds);
          m.stamp();
       }
    }
    
    Ciao.
  • Re: Errore static

    Posto il codice con gli errori (sto studiando da poco, gli errori saranno molto stupidi)

    il primo file Person non da errori
    Questi sono gli errori del secondo file calculateAge

    calculateAge.java:4: error: cannot find symbol
    int ageDays = ageYears * 365;
    ^
    symbol: variable ageYears
    location: class calculateAge
    calculateAge.java:6: error: cannot find symbol
    Person m = new Person(ageYears, ageDays, ageSeconds);
    ^
    symbol: variable ageYears
    location: class calculateAge
    2 errors

    
    public class Person {
       public static int ageYears;
       public static int ageDays;
       public static int ageSeconds;
    
       Person(int ageYears, int ageDays,int ageSeconds){
          this.ageYears = ageYears;
          this.ageDays = ageDays;
          this.ageSeconds = ageSeconds;
       }
    
       public void stamp() {
          System.out.println("You are" + ageDays + "days old");
          System.out.println("You are" + ageSeconds + "seconds old");
    
       }
    }
    
    
    public class calculateAge {
    
       public static void main(String[] args) {
          int ageDays = ageYears * 365;
          int ageSeconds = ageDays * 24 * 60 * 60;
          Person m = new Person(ageYears, ageDays, ageSeconds);
          m.stamp();
       }
    }

    grazie per la disponibilità
  • Re: Errore static

    AgeYears non lo dichiari da nessuna parte.
    Che poi è la variabile che ti da il là ai calcoli quindi da qualche parte la devi fissare/acquisire.
    Inoltre quando fai il javac compila entrambi i file così fai conoscere alla classe calculateAge l'oggetto Person.

    javac nomefile_1.java nomefile_2.java ... nomefile_n.java
    Nel tuo casoi metterai prima Person(che non dichiara altri tipi di oggetti complessi) e poi calculateAge

    Ciao.
  • Re: Errore static

    Perfetto !
    grazie per il consiglio javac nomefile_1.java nomefile_2.java ... nomefile_n.java
    non lo sapevo che si potesse fare

    Saluti
Devi accedere o registrarti per scrivere nel forum
6 risposte