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

    trovare il minimo valore tra una serie di interi

    Salve, ho il seguente programma da risolvere potete aiutarmi?
    << Ottenere un programma che legge un numero maggiore di 1 e stampa solo il più piccolo dei suoi divisori (escluso 1 e il numero stesso), se esiste, altrimenti stampa il messaggio "Non trovato". >>
    Questo l'ho realizzato io ed è giusto, eccetto per calcolare il minimo valore richiesto, cioè nella riga del System.out.println mi dà errore perchè mi dice che non posso passare un intero dentro Math.min.

    codice:
    import jbook.util.Input;
    import java.lang.*;
    
    public class TrovaMinimo
    {
    	public static void main (String [] args)
    	{
    		int n;
    		do
    		{
    			n = Input.readInt("Dammi un intero > 1: ");
    		}
    		while (n<=1);
    		int i=0;
    		if ((n%i)==0)
    		{
    			for (i=2; i<n; i++)
    			{
    				System.out.println("Il più piccolo divisore di " + n + " è: " + Math.min(i));
    			}
    		}
    		else
    		{
    			System.out.println("Non trovato");
    		}
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il minimo si calcola tra due valori, quindi non puoi chiamare Math.min(i)!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    e quindi per trovare il minimo tra tutti i divisori come devo fare?

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Sinceramente non capisco come il tuo codice possa funzionare:
    - dovresti effettuare un controllo sulla validità del numero n, se non numerico oppure minore o uguale a 1 dovresti costringere l'utente a re-inserirlo;
    - se n <= 1 esegui un ciclo while... che non fa nulla, quindi il programma entrerebbe in loop
    - se il programma entra in loop inizializzi i a 0, e all'istruzione successiva esegui una operazione di modulo dividendo per i. Indi avresti una ArithmeticException visto che non puoi eseguire una divisione per 0
    - sicuramente non ha senso calcolare la min() di un numero. Secondo me tu dai per scontato che Java calcoli da solo il minimo fra tutti i valori... ma come fa a sapere a quali valori ti riferisci? E' una cosa che devi spiegarli esplicitamente tu.

    Perchè non provi a scrivere che tipo di ragionamento hai fatto per scrivere questo programma? Non è solo questione di un errore di compilazione sulla Math.min(), se anche riuscissi a farlo compilare il programma non funzionerebbe per i motivi che ti ho detto...

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    Moderazione

    Come indicato dal regolamento interno, il codice va postato indentato e all'interno degli appositi tag CODE.

    Sistemo io questo post, in futuro ricordati di usare i tag code.


    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

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.