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

    [java] estendere non mi riesce

    Angolo.java:
    codice:
    package pack;
    
    public class Angolo {
    	
    	protected Double value;
    	protected String type;
    	
    	public Angolo(Double n) {
    		System.out.println("L'angolo inserito si presume in DEG");
    		value = n;
    		type = "deg";
    	}
    	
    	public Angolo(Double n, String s){
    		if (s.equalsIgnoreCase("d") || s.equalsIgnoreCase("deg")) {
    		value = n;
    		type = "deg";
    		} else if (s.equalsIgnoreCase("r") || s.equalsIgnoreCase("rad")) {
    		value = n;
    		type = "rad";
    		} else if (s.equalsIgnoreCase("g") || s.equalsIgnoreCase("gon")) {
    		value = n;
    		type = "gon";
    		}
    	}
    	
    	public static Double DegToRad(Double n) {
    		// n:180 = value:pi_greco
    		return n*java.lang.Math.PI/180;
    	}
    	
    	public static Double DegToGon(Double n) {
    		// n:180 = value:200
    		return n*200/180;
    	}
    	
    	public static Double RadToDeg(Double n) {
    		// n:pi_greco = value:180
    		return n*180/java.lang.Math.PI;
    	}
    	
    	public static Double RadToGon(Double n) {
    		// n:pi_greco = value:200
    		return n*200/java.lang.Math.PI;
    	}
    	
    	public static Double GonToDeg(Double n) {
    		// n:200 = value:180
    		return n*180/200;
    	}
    	
    	public static Double GonToRad(Double n) {
    		// n:200 = value:pi_greco
    		return n*java.lang.Math.PI/200;
    	}
    	
    	public void DegToRad() {
    		// n:180 = value:pi_greco
    		value = this.value*java.lang.Math.PI/180;
    		type = "rad";
    	}
    	
    	public void DegToGon() {
    		// n:180 = value:200
    		value = this.value*200/180;
    		type = "gon";
    	}
    	
    	public void RadToDeg() {
    		// n:pi_greco = value:180
    		value = this.value*180/java.lang.Math.PI;
    		type = "deg";
    	}
    	
    	public void RadToGon() {
    		// n:pi_greco = value:200
    		value = this.value*200/java.lang.Math.PI;
    		type = "gon";
    	}
    	
    	public void GonToDeg() {
    		// n:200 = value:180
    		value = this.value*180/200;
    		type = "deg";
    	}
    	
    	public void GonToRad() {
    		// n:200 = value:pi_greco
    		value = this.value*java.lang.Math.PI/200;
    		type = "rad";
    	}
    	
    	public String getType(){
    		return this.type;
    	}
    	
    	public Double getValue() {
    		return this.value;
    	}
    	
    	protected void setType(String s){
    		if (s.equalsIgnoreCase("d") || s.equalsIgnoreCase("deg")) {
    			type = "deg";
    			} else if (s.equalsIgnoreCase("r") || s.equalsIgnoreCase("rad")) {
    			type = "rad";
    			} else if (s.equalsIgnoreCase("g") || s.equalsIgnoreCase("gon")) {
    			type = "gon";
    		}
    	}
    	
    	protected void setValue(Double n){
    		value = n;
    	}
    }
    compilo e tutto ok...
    Teta.java:
    codice:
    package pack;
    import pack.Angolo;
    import pack.Vertice;
    
    public class Teta extends Angolo {
    	
    	public Teta (Double n, String s, Vertice v1, Vertice v2) {
    		//si chiamerebbe teta_v1_v2
    		if(n > 0){
    			if (s.equalsIgnoreCase("d") || s.equalsIgnoreCase("deg")) {
    			super.setValue(n);
    			super.setType("deg");
    			} else if (s.equalsIgnoreCase("r") || s.equalsIgnoreCase("rad")) {
    			super.setValue(n);
    			super.setType("rad");
    			} else if (s.equalsIgnoreCase("g") || s.equalsIgnoreCase("gon")) {
    			super.setValue(n);
    			super.setType("gon");
    			}
    		} else {
    			if (s.equalsIgnoreCase("d") || s.equalsIgnoreCase("deg")) {
    			super.setValue(n+360);
    			super.setType("deg");
    			} else if (s.equalsIgnoreCase("r") || s.equalsIgnoreCase("rad")) {
    			super.setValue(n+2*Math.PI);
    			super.setType("rad");
    			} else if (s.equalsIgnoreCase("g") || s.equalsIgnoreCase("gon")) {
    			super.setValue(n+400);
    			super.setType("gon");
    			}
    		}
    		this.set_and_verify(this,v1,v2);
    	}
    	
    	private void set_and_verify(Teta ang, Vertice v1, Vertice v2){
    		if(v1.get_est() > v2.get_est()){
    			if (ang.getType().equalsIgnoreCase("d") || ang.getType().equalsIgnoreCase("deg")) {
    			ang.setValue(ang.getValue()+180);
    			} else if (ang.getType().equalsIgnoreCase("r") || ang.getType().equalsIgnoreCase("rad")) {
    			ang.setValue(ang.getValue()+Math.PI);
    			} else if (ang.getType().equalsIgnoreCase("g") || ang.getType().equalsIgnoreCase("gon")) {
    			ang.setValue(ang.getValue()+200);
    			}
    		}		
    	}	
    }
    parovo a compilare ma mi da questo errore:
    pack\Teta.java:7: cannot find symbol
    symbol : constructor Angolo()
    location: class pack.Angolo
    public Teta (Double n, String s, Vertice v1, Vertice v2) {
    ^
    1 error
    si può sapere cosa sbaglio????

  2. #2

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ogni costuttore DEVE iniziare invocando o un costruttore della superclasse (con super(...) ) o un costruttore della stessa classe (con this(...) ). Se tale invocazione manca il compilatore introduce automaticamente la chiamata al costruttore senza argomenti della superclasse (nel tuo caso Angolo()) che è automaticamente definito se non ci sono altri costruttori, mentre deve essere esplicitamente inserito se sono definiti altri costruttori, altrimenti si hanno errori di compilazione. Poichè tale costruttore in Angolo manca hai l'errore di compilazione

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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 © 2024 vBulletin Solutions, Inc. All rights reserved.