Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problema Math.random()

  1. #1

    Problema Math.random()

    Ciao a tutti ragazzi, sto eseguendo un esercizio in cui si chiede di far muovere su una scacchiera un re, ho scritto questo codice:
    codice:
    import javax.swing.JOptionPane;
    import java.lang.Math;
    
    public class scacchiera {
    private int posxb;
    private int posxn;
    private int posyb;
    private int posyn;
    
    
        public scacchiera(int xb, int xn, int yb, int yn) {
        	posxb = xb;
        	posxn = xn;
        	posyb = yb;
        	posyn = yn;
        }
        
        public static void main(String [] args){
        
        int xbb = (int)(Math.random()*7)+1;
        int ybb = (int)(Math.random()*7)+1;
        int xnn = (int)(Math.random()*7)+1;
        int ynn = (int)(Math.random()*7)+1;
    
        scacchiera a = new scacchiera(xbb,xnn,ybb,ynn);
        System.out.println(a.getWhite());
        System.out.println(a.getBlack());	
        System.out.println(a.checkTaken());	
        }
        
        public String getWhite(){
        	return posxb + "," + posyb;
        }
        
        public String getBlack(){
        	return posyn + "," + posyn;
        	
        }
        
        public boolean checkTaken(){
        	
        	boolean c;
        	if (posxb == posxn && posyb == posyn)
        		c = true;
        			else
        				c = false;
        	return c;			
        }
        
        
    }
    Il problema sta nel metodo checkTaken() che dovrebbe restituire true se i due re si trovano nella stessa posizione altrimenti false. Normalmente funziona ma con Math.random() anche se escono le stesse posizioni, il metodo mi restituisce comunque false. Non riesco a capire come mai
    Il mio sito: Home

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema non è il metodo checkTaken(), ma il metodo di stampa getBlack():

    codice:
        public String getBlack(){
        	return posyn + "," + posyn;
        	
        }
    Invece di stampare posxn e posyn, stampi due volte posyn.


    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

  3. #3
    Accidenti, non l'avevo visto.. Che occhio da falco
    Il mio sito: Home

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.