Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Chiamate ai metodi

  1. #1

    Chiamate ai metodi

    Buongiorno,

    Ho creato un programma che stampa delle scritture contabili.
    Al momento di lanciarlo con il main, non esegue alcuna stampa.
    Penso che il problema sia la chiamata ai metodi creati, ma non riesco a trovarlo con esattezza.
    Di seguito il codice.

    /*Interfaccia che prevede un metodo per la registrazione
    delle scritture contabili.*/


    public interface ScrittureContabili
    {
    public void registra();
    }

    //Classe che rappresenta una generica fattura


    public class Fattura implements ScrittureContabili
    {
    private int nDoc;


    @Override
    public void registra()
    {
    getnDoc();
    }


    public int getnDoc()
    {
    for(int i = 1; i <= 20
    {
    i++;
    return i;
    }

    return nDoc;
    }


    public void setnDoc(int nDoc) {
    this.nDoc = nDoc;
    }
    }



    /*Classe che registra una scrittura contabile in seguito
    alla ricevuta di una fattura fornitori*/


    public class FatturaFornitori extends Fattura implements ScrittureContabili
    {
    private int nDoc;
    private String fornitore;
    private String voceCosto;
    private double costo;


    public void leggiVoci()
    {
    Scanner sc = new Scanner(System.in);
    System.out.println("Inserisci un fornitore e una voce di costo con il relativo valore");
    fornitore = sc.nextLine();
    voceCosto = sc.nextLine();
    costo = sc.nextDouble();
    //sc.close();
    }


    public int getnDoc()
    {
    for(int nDoc = 1; nDoc <= 20
    {
    nDoc++;
    return nDoc;
    }


    return -1;
    }
    public void registra()
    {
    leggiVoci();
    if (costo < 0)
    {
    leggiVoci();
    System.out.println("--------------------- " + nDoc + " -----------------");
    System.out.println(voceCosto + " a " + fornitore + " | " + costo + " | " + " | ");
    System.out.println("--------------------- " + nDoc + " -----------------");
    }


    System.out.println("Il costo non è valido");
    }


    public String getFornitore() {
    return fornitore;
    }



    /*Classe che lancia il programma di registrazione
    delle scritture contabili.*/


    public class FatturaMain
    {


    public static void main(String[] args)
    {
    FatturaFornitori ff = new FatturaFornitori();

    ff.getnDoc();
    ff.registra();
    }
    }

  2. #2
    codice:
    public int getnDoc() 
    {
    for(int i = 1; i <= 20;)
    {
    i++;
    return i;
    }
    Questo ciclo for è sbagliatissimo! e anche inutile perché lo puoi sostituire con una variabile di istanza.

    codice:
    @Override
    public void registra() 
    {
    getnDoc();
    }
    Questo metodo non fa nulla apparte richiamare un metodo che restiuisce un intero ma che andrà perso perché non viene memorizzato da nessuna parte

    codice:
    public int getnDoc() 
    {
    for(int i = 1; i <= 20;)
    {
    i++;
    return i;
    }
    
    return nDoc;
    }
    Questo metodo deve restituire un solo valore... o i opprure nDoc....

    codice:
    public void leggiVoci()
    {
    Scanner sc = new Scanner(System.in);
    System.out.println("Inserisci un fornitore e una voce di costo con il relativo valore");
    fornitore = sc.nextLine();
    voceCosto = sc.nextLine();
    costo = sc.nextDouble();
    //sc.close();
    }
    Dovresti specificare quali sono i dati richiesti e lo scanner non va chiuso.... non è un file...

    codice:
    for(int nDoc = 1; nDoc <= 20;)
    {
    nDoc++;
    return nDoc;
    }
    Ache questo for è sbagliato apparte che interrompe la propria esecuzione al primo ciclo

    Il resto è inutile leggerlo se non si risolvono questi problemi estremamente basilari!

    un ciclo for si implementa così
    codice:
    for (int variabile; variabile <= numero di iterazioni; incremento ad ogni iterazione)
    {
       operazioni;
       //e' sbagliatissimissimo mettere un return qua dentro!!!!!!!!!
    }
    return valoreDaRestituire;
    esempio, un ciclo for che incrementa 20 volte la variabile x
    codice:
    int x=0;
    for (int i=0; i<=20; i++)
    {
    x++;
    }
    return x;

    l'unico caso in cui puoi mettere un return la dentro, ma sarebbe comunque incoerente, sarebbe:
    codice:
    public void inc(int x)
    {
    for (int i=0; i<=300; i++)
    {
    x++;
    if(x==300) return;
    }
    }
    Ultima modifica di antomau96; 11-02-2017 a 11:41

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.