Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    [JAVA] Banalissimo dubbio sui costruttori.

    Salve ragazzi, sto riprendendo Java dopo vari anni e sto facendo un rapido ripasso, in particolare sto ripassando i costruttori.
    Ho creato un banalissimo programma ma a quanto pare c'è un problema, infatti inizializzo una variabile di istanza al valore 666 tramite il costruttore, tuttavia quando la stampo esce fuori il valore 0 e non 666.
    Grazie in anticipo a chiunque voglia aiutarmi!
    ECCO IL FILE PRINCIPALE
    codice:
    package javaapplication3;
    import java.util.Scanner;
    public class JavaApplication3 
    {
        public static void main(String args[])
            {
                Scanner input=new Scanner(System.in);
                ClasseProva eccolo=new ClasseProva(666);
                eccolo.maggioreminore(input.nextInt(),input.nextInt());   
            }
    }
    ED ECCO LA CLASSE
    codice:
    package javaapplication3;
    public class ClasseProva
    {
        public int f;
        public ClasseProva(int cost)
            {
                int f=cost;
            }
        public void maggioreminore(int a, int b)
            {
                if (a>b)
                    System.out.printf("il numero maggiore è: %d\n",a);
                if(a<b)
                    System.out.printf("il numero maggiore è: %d",b);
                else
                    System.out.printf("i due numeri sono uguali\n");
                
                System.out.printf("Prova costruttore: %d\n",f);  
            }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    è presto detto: tu dentro il costruttore fai

    codice:
    int f = cost;
    hai definito una nuova variabile f e assegni il valore cost, peccato che questa variabile appena finisce lo scope (cioè il costruttore) non esista più.
    Non hai assegnato il valore alla variabile esterna, che ha ancora il suo default (cioè 0)
    Togli l'int prima di f nel costruttore e vedi che funziona

    ps java ha una sezione dedicata, chiedi ai moderatori di farti spostare

    pps aggiungo anche una revisione del tuo codice

    codice:
    public void maggioreminore(int a, int b) {
    		if (a > b) {
    			System.out.printf("il numero maggiore è: %d\n", a);
    		} else if (a < b) {
    			System.out.printf("il numero maggiore è: %d", b);
    		}
    		else {
    			System.out.printf("i due numeri sono uguali\n");
    		}
    
    		System.out.printf("Prova costruttore: %d\n", f);
    	}
    perché usi printf e non println??
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Ma certo, come ho fatto a non accorgermene? Ti ringrazio molto
    Mi scuso ma ero sicuro di aver postato nella sezione Java.
    Perchè uso printf? Solo oggi ho messo mano nuovamente a Java vengo da C, quindi questione d'abitudine.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    immaginavo, perché a meno di esigenze particolari non si passa da un formatter interno solo per visualizzare i dati!!!!
    RTFM Read That F*** Manual!!!

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.