Programma java

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Programma java

    Usa delle costanti.

  • Re: Programma java

    04/01/2025 - Panda96 ha scritto

    Ti ringrazio per il consiglio, pero non posso utilizzare ancora gli arrey perchè non li abbiamo ancora visti :/ 

    Cavoli! Hai qualcuno che ti punta una pistola alla tempia e ti sussurra: "puoi usare gli array SOLO dopo averli visti e li puoi vedere quando te lo dico io"?

    La scuola e' cambiata una sacco dai miei tempi! 

  • Re: Programma java

    04/01/2025 - migliorabile ha scritto:

    Consiglio.
    Crea DUE funzioni:

    1. una che converte un numero romano a numero decimale
    2. una che converte un numero decimale a numero romano

    .

    Doppio lavoro? SI
    Doppia probabilita' di fare errori? SI

    MA ti serve per controllare SE le conversioni sono giuste:   

    MMXXV -> 2025 -> MMXXV
    4999 -> MMMMCMXCIX -> 4999


    E dimostri di non essere un "semplice" "pigiatasti" :-)

    Un metodo "semplice", una volta capito come funziona, NON E' quello di scrivere tonnellate di codice e di IF, MA quello di usare un "automa a stati finiti".
    (Ci saranno sempre tonnellate di iF, MA con una STRUTTURA ben definita :-) )
    Niente di "trascendentale" MA serve usare qualche neurone in piu.

    https://it.wikipedia.org/wiki/Automa_a_stati_finiti

    SEMBRA complicato, ma, accendendo i suddetti neuroni in piu', e' "facile".
    Tra l'altro, usando l'automa, hai praticamente "A GRATIS" la gestione degli errori :-)

    Nota: Mathematica converte zero in "N" :-)

    .

    Diciamo che DEVI potre convertire TUTTI i numeri interi da 0 (zero) a 4999.
    Per numeri >= 5000 servono dei simboli "dedicati". 
    Fondamentalmente I,V,X,L,C,D,M con delle "barrette" sopra: una fino a un milione, due fino a un milirado, 3 fino a mille miliardi, ecc.

    package edu.avogadro;

    import java.util.Scanner;

    public class ConversioneRomanoDecimale2 {

        public static void main(String[] args) {
            Scanner lettore = new Scanner(System.in);
            boolean entra = true;

            System.out.println("Digita _finitum est_ per terminare il programma");

            while (entra) {
                System.out.print("Inserisci il numero romano da convertire: ");
                String numeroRomano = lettore.nextLine();

                if (numeroRomano.equalsIgnoreCase("finitum est")) {
                    System.out.println("Programma terminato");
                    entra = false;
                } else {
                    numeroRomano = numeroRomano.toUpperCase();
                    if (!numeroRomano.isEmpty()) {
                        int risultato = convertitoreRomano(numeroRomano);
                        String check = Main.convertiDecimaleARomano(String.valueOf(risultato)).toUpperCase();
                        if (numeroRomano.equals(check)) {
                            System.out.println("Equivalenza decimale del numero romano inserito: " + risultato);
                        } else {
                            System.out.println("Assicurati di inserire lettere valide per la composizione");
                        }
                    }
                }

            }


        }


        static int convertitoreRomano(String numeroRomano) {
            final int ZERO = 0;
            final int UNO = 1;
            final int CINQUE = 5;
            final int DIECI = 10;
            final int CINQUANTA = 50;
            final int CENTO = 100;
            final int CINQUECENTO = 500;
            final int MILLE = 1000;
            char digit;
            int valorePrecedente = 0;
            int valoreDecimale = 0;
            int risultato = 0;

            for (int i = ZERO; i < numeroRomano.length(); i++) {
                digit = numeroRomano.charAt(i);

                if (digit == 'I') {
                    valoreDecimale = UNO;
                } else if (digit == 'V') {
                    valoreDecimale = CINQUE;
                } else if (digit == 'X') {
                    valoreDecimale = DIECI;
                } else if (digit == 'L') {
                    valoreDecimale = CINQUANTA;
                } else if (digit == 'C') {
                    valoreDecimale = CENTO;
                } else if (digit == 'D') {
                    valoreDecimale = CINQUECENTO;
                } else if (digit == 'M') {
                    valoreDecimale = MILLE;
                }

                if (valorePrecedente < valoreDecimale) {
                    risultato = risultato - valorePrecedente;
                    risultato = risultato + (valoreDecimale - valorePrecedente);
                } else {
                    risultato = risultato + valoreDecimale;
                }

                valorePrecedente = valoreDecimale;
            }

            return risultato;
        }
    }

    Complimenti ottimo metodo, il migliore penso per questo esercizio, studierò meglio gli automi, sono sincero non l'ho fatto io 

  • Re: Programma java

    05/01/2025 - migliorabile ha scritto:

    04/01/2025 - Panda96 ha scritto

    Ti ringrazio per il consiglio, pero non posso utilizzare ancora gli arrey perchè non li abbiamo ancora visti :/ 

    Cavoli! Hai qualcuno che ti punta una pistola alla tempia e ti sussurra: "puoi usare gli array SOLO dopo averli visti e li puoi vedere quando te lo dico io"?

    La scuola e' cambiata una sacco dai miei tempi! 

    Ma in realtà sono io che cerco di utilizzare cose che abbiamo visto in classe, sono sincero non bene come muovermi in questo ambiente, qual'è la strada corretta per un ottiimo apprendimento, io vengo dal settore della metalmeccanica :/ ahah 

  • Re: Programma java

    Nota: NON SERVE quotare l'intero post.

    E' cosa buona e giusta seguire ed approfondire quello che si e' fatto in classe. Ma tieni presente che quello che avrai imparato alla fine del corso, sara' un'infinitesima parte delle cose che dovresti sapere. Tutte le altre te le dovrai studiare per conto tuo. E questo e' vero tanto per te quanto per ogni membro di questo forum, esperto e non.

    Gli array, fortunatamente, non sono oggetti 'astrusi', ma in generale sono descritti nel capitolo successivo ai 'tipi primitivi' (interi, boolean, numeri con la virgola, caratteri).

    Quindi, in teoria, ti basta leggere qualche pagina in piu'.

    Poi ci devi mettere 'la curiosita'. Senza di quella, non si va da nessuna parte.

Devi accedere o registrarti per scrivere nel forum
19 risposte