Errore: The method distanza(double, double, double, double) is undefined for the type main

di il
4 risposte

Errore: The method distanza(double, double, double, double) is undefined for the type main

Buongiorno, sono una matricola di ingegneria che ha appena (meno di 10 giorni) preso in mano Java per la prima volta. Sto scrivendo un progetto datomi dal professore chiamato punti e rette in cui acquisendo inizialmente due punti devo determinare la retta passante tra loro e acquisendo successivamente un terzo punto determinare se esso appartiene alla retta. Il mio approccio è stato quello di creare una classe main, una punto, e una retta in cui ho creato gli oggetti punto e retta e inserito i metodi "distanza", "coefficienteAngolare" e "appartenenza", rispettivamente due double e uno string in cui vengono passati (a tutti) 4 parametri double. Il problema sorge nel richiamare suddetti metodi nel main, infatti me presenta per tutti lo stesso errore citato nel titolo.
Di seguito allego il codice, grazie a chiunque saprà darmi una risposta
MAIN

import java.util.Scanner;
import java.util.*;

public class main {
public static void main(String[] argv) {

Scanner scan = new Scanner(System.in);
System.out.println("inserire il punto A.x");
double xA;
xA=scan.nextDouble();

System.out.println("inserire il punto A.y");
double yA;
yA=scan.nextDouble();

System.out.println("inserire il punto B.x");
double xB;
xB=scan.nextDouble();

System.out.println("inserire il punto B.y");
double yB;
yB=scan.nextDouble();

double distanza= distanza( xA, xB, yA, yB);
System.out.println("la distanza tra il punto A e il punto B è:" +distanza);

double cAng=coefficienteAngolare(xA, xB, yA, yB);
double q=yB-xB;
System.out.println("la retta passante tra il punto A e il punto B è:" +cAng+"x"+"+"+q);

System.out.println("inserire il punto C.x");
double xC;
xC=scan.nextDouble();

System.out.println("inserire il punto C.y");
double yC;
yC=scan.nextDouble();

String appartenenza=appartenenza(xC, yC, cAng, q);
System.out.println("Il punto C"+str +"alla retta");

}
}

PUNTO

public class punto{
double xA;
double xB;
double xC;
double yA;
double yB;
double yC;

public static double distanza (double xA, double xB, double yA, double yB) {
double d=Math.sqrt(Math.pow((xA - xB), 2)+ Math.pow((yA - yB), 2));
return d;
}
}

RETTA

public class retta {

double coefficienteAngolare (double xA, double xB, double yA, double yB) {
//retta=mx+q
double cAng;
cAng=((yB-yA)/(xB-xA));
return cAng;
}


public static String appartenenza (double cAng, double xC, double yC, double q) {
String str;
if (yC==(cAng*xC)+q) {
str="appartiene";
return str;
}
else {
str= "non appartiene";
return str;
}
}
}

4 Risposte

  • Re: Errore: The method distanza(double, double, double, double) is undefined for the type main

    Partiamo dall'inizio
    
    public class punto{
    double xA;
    double xB;
    double xC;
    double yA;
    double yB;
    double yC;
    Secondo te un punto è caratterizzato da 6 float?
  • Re: Errore: The method distanza(double, double, double, double) is undefined for the type main

    Maeve ha scritto:


    Il problema sorge nel richiamare suddetti metodi nel main, infatti me presenta per tutti lo stesso errore citato nel titolo.
    Premesso che dal punto di vista del "design" delle classi, è un tantino un disastro ... ma è comprensibile visto quanto hai detto all'inizio.

    Per come hai invocato distanza, il compilatore presupporrebbe che sia definito nella classe main. Mentre invece è definito nella classe punto. E siccome distanza è static, tecnicamente lo si può invocare sul nome della classe.

    double distanza = punto.distanza( xA, xB, yA, yB);

    A parte la questione "tecnica" sulla invocazione, il problema è il resto.
  • Re: Errore: The method distanza(double, double, double, double) is undefined for the type main

    Non è un punto con 6 double.. sono 3 punti (a, b, c)
    grazie andbin, come puoi notare sono molto all'inizio e so che devo sistemare diverse cose.. essendo il primo programma che scrivo in java mi interessava solo che "compilasse", poi quando avrò sviluppato delle conoscenze più approfondite in materia lo sistemerò
  • Re: Errore: The method distanza(double, double, double, double) is undefined for the type main

    Maeve ha scritto:


    Non è un punto con 6 double.. sono 3 punti (a, b, c)
    Quindi, in realtà, hai definito una classe "collezione di tre punti", non una classe "punto".
    La classe punto avrà 2 coordinate (sul piano).
    E poi avrai TRE oggetti "punto".
    Oppure un "contenitore" di punti (ma andiamo per ordine, rimaniamo nel semplice).

    La tua classe "punto" avrà quindi DUE coordinate.

    La logica è "le classi modellano parti della realtà" (niente pippone su istanze, oggetti eccetera).

    Quindi il "punto" avrà due coordinate.
    Poi avrai la retta, che avrà... cosa ?

    Infine avrai metodi del tipo "distanza tra DUE punti".
    Distanza tra un punto e una retta, ma con un poco di pazienza.


    Daje che un po' alla volta il programma salterà fuori!
Devi accedere o registrarti per scrivere nel forum
4 risposte