Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Battaglia navale?

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    21

    Battaglia navale?

    Salve, potete correggermi questo pezzo di codice?
    In pratica data una griglia 5x5 devo inserire 6 navi. La posizione delle navi però deve essere Random.

    (import java.util.Random
    double r,c,m[][]= new double[5][5];
    Random random = new Random();
    for(r=0;r<5;r++)
    {
    for(c=0;c<5;c++)
    {
    r=Math.random()*5;
    c=Math.random()*5;
    }
    }
    for(r=0;r<5;r++)
    {
    for(c=0;c<5;c++)
    {
    System.out.println(" "+m[(int)r][(int)c]);
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Mi sembra un po' pochino anche per poter dire di averci provato

    Cos'è è che ti causa più difficoltà? Anche a livello concettuale...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    21
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Mi sembra un po' pochino anche per poter dire di averci provato

    Cos'è è che ti causa più difficoltà? Anche a livello concettuale...

    Ho modificato il codice, ma la nave me la posiziona solo nella posizione 0 0

    while(l<6)
    {
    r=(int)Math.random()*5;
    c=(int)Math.random()*5;

    if(m[r][c]==0)
    {
    m[r][c]=1;
    }
    l++;
    }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Il cast ha precedenza rispetto all'operatore di moltiplicazione. Quindi, prendendo ad esempio questa istruzione:

    codice:
    r = (int) Math.random() * 5;

    Prima viene eseguito il cast a int del valore restituito da Math.random() e poi la moltiplicazione per 5.
    Risultato: sempre 0 perchè Math.random() restituisce un valore compreso fra 0 (incluso) e 1 (escluso), quindi il cast a int porterà il valore sempre a 0... a questo punto lo puoi moltiplicare per quel che vuoi sarà sempre 0.

    Correzione:

    codice:
    r = (int) (Math.random() * 5);

    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    21
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Il cast ha precedenza rispetto all'operatore di moltiplicazione. Quindi, prendendo ad esempio questa istruzione:

    codice:
    r = (int) Math.random() * 5;

    Prima viene eseguito il cast a int del valore restituito da Math.random() e poi la moltiplicazione per 5.
    Risultato: sempre 0 perchè Math.random() restituisce un valore compreso fra 0 (incluso) e 1 (escluso), quindi il cast a int porterà il valore sempre a 0... a questo punto lo puoi moltiplicare per quel che vuoi sarà sempre 0.

    Correzione:

    codice:
    r = (int) (Math.random() * 5);

    Ciao.

    Avevo corretto. Però grazie mille della risposta

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.