Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Metodi ad una classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    3

    Metodi ad una classe

    Ciao, ho bisogno di una informazione. Ho creato un progetto in java che deve calcolare dove e quando due treni che partono uno dalla stazione centrale e l'altro da una stazione periferica si incontreranno. essi viaggiano l'uno verso l'altro lungo la stesso itinerario.
    1. Tutti i treni trascorrono una quantità di tempo fissata in ogni stazione.
    2. Tutti i treni accelerano e decelerano allo stesso tasso (costante); tutti i treni hanno la stessa velocità massima
    3. Quando un treno lascia la stazione, accellera (ad un tasso costante) finché non raggiunge la sua velocità massima. Un treno mantiene la velocità massima finché non comincia a decelerare (allo stesso tasso costante) in prossimità della stazione successiva. I treni lasciano la stazione con una velocità iniziale pari a zero (0.0) e si fermano ad ogni stazione intermedia con una velocità finale pari a zero. Stazioni adiacenti lungo un dato itinerario sono sufficientemente distanti da consentire ai treni raggiungere la velocità massima prima di cominciare a decelerare
    4. Entrambi i treni partono nello stesso momento
    5. Un itinerario è; composto da al più 50 fermate

    Io ho creato 3 classi, il progetto funziona però, a detta della professoressa (progetto universitario) è troppo " sequenziale". Dovrei modificarlo aggiungendo dei metodi..solo che non so da dove cominciare :? qualcuno può darmi una mano? vi posto le tre classi intanto...

    Treno

    [CODE]
    import java.io.IOException;
    import java.util.*;


    public class Treno {

    public float tempopercorrenza1;
    public float tempopercorrenza2;
    public float diststsuccessiva;
    public float diststsuccessiva2;
    public float velocita_maxpiedi;
    public float acceldecel;
    public float spazio_decelerazione_accel;
    public float tempo_acceldec;
    public float cost_acc_dec;
    public float piedi=5280;
    public int numstaz=0;
    public int d=0;
    public int e=0;
    public int w=0;
    public Vector <Float> punto_incontro=new Vector <Float>();
    public Vector <Float> tempo_incontro=new Vector <Float>();
    public Vector <Float> distanzasuccessivatr=new Vector <Float>();
    public Vector <Float> distanzasuccessivatr2=new Vector <Float>();
    public Vector <Float> tempopercorrenzatr=new Vector <Float>();
    public Vector <Float> tempopercorrenzatr2=new Vector <Float>();
    public float difftempoper;
    public float tempopercor;
    public float tempopercor2;
    public int z;
    public int f=0;
    public float stazione;
    public Scenario sc=new Scenario();


    public void datitreno() throws IOException {
    sc.leggiinput();
    int r=0;
    z=0;
    int g;
    Treno tr=new Treno();
    cost_acc_dec=0.5f;
    tempo_acceldec=(sc.velmax/sc.accelerazione);
    spazio_decelerazione_accel=cost_acc_dec*(sc.accele razione*(tempo_acceldec*tempo_acceldec));
    System.out.println(spazio_decelerazione_accel);
    while (sc.stazioni[z+1]!=null){
    if(sc.stazioni[z]!=-1.0f){
    calcolaittreno1();
    calcolaittreno2();
    if(diststsuccessiva>spazio_decelerazione_accel&&di ststsuccessiva2>spazio_decelerazione_accel){
    if(sc.stazioni[z+1]==0.0f){
    if (tr.diststsuccessiva==tr.diststsuccessiva2&&tr.tem popercorrenza1==tr.tempopercorrenza2){
    punto_incontro.addElement((sc.stazioni[z]/2)*1000);
    tempo_incontro.addElement ((tempopercorrenza1-sc.tempofermata.elementAt(e))/2);
    System.out.println(punto_incontro.elementAt(r));
    System.out.println(tempo_incontro.elementAt(r));
    d=0;
    distanzasuccessivatr.clear();
    distanzasuccessivatr2.clear();
    tempopercorrenzatr.clear();
    tempopercorrenzatr2.clear();
    }
    }
    else{
    if(sc.stazioni[z]==stazione){
    System.out.println("x");
    g=0;
    while (g<tempopercorrenzatr.size()){
    tempopercor=tempopercor+tempopercorrenzatr.element At(g);
    g++;
    }
    g=0;
    while(g<tempopercorrenzatr2.size()){
    tempopercor2=tempopercor2+tempopercorrenzatr2.elem entAt(g);
    g++;
    }
    if(sc.tempofermata.elementAt(e)>Math.abs(tempoperc or-tempopercor2)){

    if(tempopercor<tempopercor2){
    System.out.println("tempopercor="+tempopercor2);
    tempo_incontro.addElement(tempopercor2-sc.tempofermata.elementAt(e));
    punto_incontro.addElement((sc.stazioni[z])*1000);
    }
    if(tempopercor>tempopercor2){
    System.out.println("tempopercor="+tempopercor);
    tempo_incontro.addElement(tempopercor-sc.tempofermata.elementAt(e));
    punto_incontro.addElement((sc.stazioni[z])*1000);}
    if(tempopercor==tempopercor2){
    System.out.println("tempopercor="+tempopercor2);
    tempo_incontro.addElement(tempopercor2-sc.tempofermata.elementAt(e));
    punto_incontro.addElement((sc.stazioni[z])*1000);
    }


    }
    d=0;
    tempopercor=0;
    tempopercor2=0;
    distanzasuccessivatr.clear();
    distanzasuccessivatr2.clear();
    tempopercorrenzatr.clear();
    tempopercorrenzatr2.clear();


    }
    else{
    float tdiff;
    float tdiffVelmax;
    float sdiffVelmax;
    float sdiffpercor=0;
    float spaziorim;
    float spaztr1=0;
    float tvelmax;
    float distanzatr1=0;
    float distanzatr2=0;
    g=0;
    while(g<tempopercorrenzatr.size()){
    tempopercor=tempopercor+tempopercorrenzatr.element At(g);
    distanzatr1=distanzatr1+distanzasuccessivatr.eleme ntAt(g);
    g++;
    }
    g=0;
    while(g<tempopercorrenzatr2.size()){
    tempopercor2=tempopercor2+tempopercorrenzatr2.elem entAt(g);
    distanzatr2=distanzatr2+distanzasuccessivatr2.elem entAt(g);
    g++;
    }
    if (tempopercor<tempopercor2){
    tdiff=tempopercor2-tempopercor;
    tempopercor2=tempopercor2+cost_acc_dec;
    }
    else{tdiff=tempopercor-tempopercor2;
    tempopercor=tempopercor+cost_acc_dec;
    spaztr1=distanzatr1+spazio_decelerazione_accel;
    }
    if(tdiff<cost_acc_dec){
    tdiffVelmax=tdiff-cost_acc_dec;
    sdiffVelmax=sc.velmax*tdiffVelmax;
    sdiffpercor=(sdiffVelmax+spazio_decelerazione_acce l)+(sc.velmax*cost_acc_dec);
    }
    if(tempopercor<tempopercor2){
    spaziorim=(stazione-sdiffpercor)-spaztr1;
    }
    else{
    spaziorim=(stazione+spazio_decelerazione_accel)-(sc.stazioni[z]+sdiffpercor);
    }
    tvelmax=spaziorim/sc.velmax;
    tempo_incontro.addElement((tempopercor+(tvelmax/2)));
    punto_incontro.addElement((sc.stazioni[z]*1000)+(spaziorim/2));
    }}
    d=0;
    tempopercor=0;
    tempopercor2=0;
    distanzasuccessivatr.clear();
    distanzasuccessivatr2.clear();
    tempopercorrenzatr.clear();
    tempopercorrenzatr2.clear();
    while (sc.stazioni[z]!=0.0f){
    z++;
    f++;}
    if(sc.stazioni[z]==0.0f){z++;}
    e++;
    }
    else{System.out.println("Lista terminata");}
    }
    else {System.out.println("stazioni non sufficientemente lontane");}
    }

    }


    public void calcolaittreno1 () throws IOException{


    float stazionepar=0.0f;
    float tempovelmax;
    float s_velmax;
    if (d==0){
    diststsuccessiva=((sc.stazioni[z]-stazionepar)*piedi);}
    if (d!=0){
    diststsuccessiva=Math.abs((sc.stazioni[z]-sc.stazioni[z+1])*piedi);}
    System.out.println("la stazione successiva tr1 è"+sc.stazioni[z]);
    System.out.println(diststsuccessiva);
    System.out.println(spazio_decelerazione_accel*2);
    s_velmax=diststsuccessiva-(spazio_decelerazione_accel*2);
    System.out.println(s_velmax);
    tempovelmax=s_velmax/sc.velmax;
    System.out.println(tempovelmax);
    System.out.println(sc.tempofermata.elementAt(e));
    tempopercorrenza1=((tempo_acceldec*2)+tempovelmax) +sc.tempofermata.elementAt(e);
    System.out.println(tempopercorrenza1);
    distanzasuccessivatr.addElement(diststsuccessiva);
    tempopercorrenzatr.addElement(tempopercorrenza1);
    }

    public void calcolaittreno2(){/**treno che parte dalla stazione periferica*/
    float tempovelmax2;
    float s_velmax2;

    if(sc.stazioni[z+1]==0.0f){
    diststsuccessiva2=Math.abs(sc.stazioni[z]*piedi);
    f++;
    System.out.println("la stazione successiva tr2 è"+sc.stazioni[z+1]);
    }
    if (sc.stazioni[z+1]!=0.0f){
    while (sc.stazioni[f+1]!=0.0f){f++;}
    diststsuccessiva2=Math.abs((sc.stazioni[f]-sc.stazioni[f-1])*piedi);
    stazione=sc.stazioni[f-1];
    System.out.println("la stazione successiva tr2 è"+sc.stazioni[f-1]);}
    s_velmax2=Math.abs(diststsuccessiva2-(spazio_decelerazione_accel*2));
    System.out.println(s_velmax2);
    tempovelmax2=Math.abs(s_velmax2/sc.velmax);
    System.out.println(tempovelmax2);
    System.out.println(sc.tempofermata.elementAt(e));
    tempopercorrenza2=((tempo_acceldec*2)+tempovelmax2 )+sc.tempofermata.elementAt(e);
    System.out.println(tempopercorrenza2);
    distanzasuccessivatr2.addElement(diststsuccessiva2 );
    tempopercorrenzatr2.addElement(tempopercorrenza2);
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    3
    Dovrei modificare questa classe con dei metodi!! chi può darmi una mano?!?!?

    Grazie mille in anticipo

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    1. Java ha un forum dedicato: si chiama, per l'appunto, Java (sub-forum di Programmazione)
    2. Il titolo della discussione deve dare il più possibile l'idea del problema che tratta
    3. Il codice va postato indentato e all'interno degli appositi tag CODE (vedere Regolamento interno)
    4. Se non specifichi esattamente qual è il problema, nessuno ti potrà dare una mano. Non puoi semplicemente postare il testo del tuo esercizio e dire "non so da dove cominciare", perchè si comincia dallo studio, dall'applicazione di ciò che si ha studiato e dalla correzione degli errori che si ottengono.
    5. Un solo problema per ciascuna discussione. Quindi, se i tuoi problemi riguardano più metodi che devono svolgere compiti diversi, dovresti aprire discussioni separate. Sempre tenendo presente che la richiesta di sviluppo codice non è ammessa su questo forum, ma viene trattata nel forum "Offro Lavoro / Collaborazione".

    Devo chiudere questa discussione: è più facile aprirne una nuova nel forum corretto, con un titolo corretto, con il codice postato nel modo corretto e con le dovute indicazioni mancanti.


    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

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.