Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Visione del metodo costruttore di una classe, all'interno del Drier class

    codice:
    import javax.swing.*;
    
    public class Craps{
    	public static void main(String[] args){
    		double risultato;
    		int i=1;	
    		
    		LancioDadi ris=new LancioDadi();
    		String output="Lancio n# "+i+"\tIl risultato dei lanci è "+ris.getDadi();
    		risultato=ris.getDadi();
    
    		if (risultato==7 || risultato==12) { 
    			output+="\nHAI VINTO!";
    			JOptionPane.showMessageDialog(null,output,"Craps",JOptionPane.INFORMATION_MESSAGE);
    		}
    		else if (risultato==2 || risultato==3 || risultato==12) { 
    			output+="\nHAI perso!";
    			JOptionPane.showMessageDialog(null,output,"Craps",JOptionPane.INFORMATION_MESSAGE);
    		}
    		
    		else {
    			do{
    				i++;
    				ris.LancioDadi();     // <----?????????????
    				output="Lancio n# "+i+"\tIl risultato dei lanci è "+ris.getDadi();
    				if (ris.getDadi()==risultato) { 
    					output+="\nHAI VINTO!";
    					JOptionPane.showMessageDialog(null,output,"Craps",JOptionPane.INFORMATION_MESSAGE);
    				}
    
    				else if (ris.getDadi()==7) { 
    					output+="\nHAI perso!";
    					JOptionPane.showMessageDialog(null,output,"Craps",JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    			while(ris.getDadi()!=risultato || ris.getDadi()!=7);
    		}
    	
    		System.exit(0);
    	}
    }		
    
    
    class LancioDadi {
    	private int dado;	
    	
    	public LancioDadi(){
    		dado=0;
    		for (int i=1;i<=2;i++){
    			dado+= 1+ (int) (Math.random()*6);
    		}
    	}
    
    	public int getDadi(){
    		return dado;
    	}
    }
    Liddove ho inserito come commento una sfilza di punti interrogativi, ottengo un errore in fase di compilazione.
    LancioDadi() [che è il costruttore della omonima classe] sembra non esser visibile da quel punto, ma non riesco a capire il perché.

  2. #2
    Scusa, ma è ovvio che ti dia errore: stai invocando il costruttore come se fosse il metodo di un'istanza... Per invocare il costruttore l'unico modo è eseguire new LancioDadi(), e questo ti restituisce una nuova istanza della classe.

    Ciao,

  3. #3
    Mmmmhhh...un'istanza diversa per ogni qual volta dovrei richiamare il costruttore, o posso "riciclare" la stessa istanza?

  4. #4
    Un'istanza diversa ogni volta. D'altra parte, avendo messo il codice che simula il lancio nel costruttore, devi per forza creare una nuova istanza ogni volta, altrimenti otterresti sempre lo stesso risultato. Ma non mi sembra un grosso problema.

    Se invece vuoi proprio utilizzare sempre la stessa istanza, devi svuotare il costruttore e spostare il codice che simula il lancio da un'altra parte.

    Ciao,

  5. #5
    In effetti stavo commettendo una leggerezza pazzessca VVoVe:


    risolto con
    codice:
    ris=new LancioDadi();

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.