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

    [java] un programma x iniziare

    codice:
    public class CellPhoneBill
    {
    	public static void main(String [] args)
    	{
    		int pmu = Integer.parseInt(args[0]);
    		int wnmu = Integer.parseInt(args[1]);
    		float plus;
    		final float flat = 29.95F;
    		float tot;
    		int restpmu;
    		int restwnmu;
    
    		if (pmu <= 400 && wnmu <= 750)
    			{
    				restpmu = (400 - pmu);
    				restwnmu = (750 - wnmu);
    				System.out.println();
    				if (pmu != 0 && wnmu != 0) 
    				if (restpmu != 0)
    					{
    						System.out.println("Hai ancora " + restpmu + " minuti di fascia alta da consumare!");
    					}
    				else
    					{
    						System.out.println("Hai terminato i minuti di fascia alta!");
    					}
    				if (restwnmu != 0)
    					{
    						System.out.println("Hai ancora " + restwnmu + " minuti di fascia bassa da consumare!");
    					}
    				else
    					{
    						System.out.println("Hai terminato i minuti di fascia bassa!");
    					}
    			
    				System.out.println();
    			}
    		else if (pmu > 400 && wnmu > 750)
    			{
    
    				plus = (((pmu - 400) * 0.40F) + ((wnmu - 750) * 0.40F));
    				tot = (flat + plus);
    				System.out.println();
    				System.out.println("Hai terminato i minuti alti di fascia alta e di fascia bassa!");
    				System.out.println("L'ammontare da pagare come spesa aggiuntiva e': " + plus + " Euro!");
    				System.out.println("L'ammontare totale da pagare come spesa mensile e': " + tot + " Euro!");
    				System.out.println();			
    			}
    		else if (pmu <= 400 && wnmu > 750)
    			{
    				plus = ((wnmu - 750) * 0.40F);
    				tot = (flat + plus);
    				restpmu = (400 - pmu);
    				System.out.println();
    				System.out.println("Hai terminato i minuti di fascia bassa!");
    				System.out.println("L'ammontare da pagare come spesa aggiuntiva e': " + plus + " Euro!");
    				System.out.println("L'ammontare totale da pagare come spesa mensile e': " + tot + " Euro!");
    				if (restpmu != 0)
    					{
    						System.out.println("Hai ancora " + restpmu + " minuti di fascia alta da consumare!");
    					}						
    				System.out.println();
    			}
    
    		else
    			{	
    
    				plus = ((pmu - 400) * 0.40F);
    				tot = (flat + plus);
    				restwnmu = (750 - wnmu);
    				System.out.println();
    				System.out.println("Hai terminato i minuti di fascia alta!");
    				System.out.println("L'ammontare da pagare come spesa aggiuntiva e': " + plus + " Euro!");
    				System.out.println("L'ammontare totale da pagare come spesa mensile e': " + tot + " Euro!");
    				if (restwnmu != 0)
    					{
    						System.out.println("Hai ancora " + restwnmu + " minuti di fascia bassa da consumare!");
    					}
    				System.out.println();
    			}
    	}
    }

    per poter eseguire il codice bisogna inserire dei valori iniziali se ad esempio faccio:

    java CellPhoneBill 401 752

    mi restituisce cm risultato

    else if (pmu > 400 && wnmu > 750)
    {

    plus = (((pmu - 400) * 0.40F) + ((wnmu - 750) * 0.40F));
    tot = (flat + plus);
    System.out.println();
    System.out.println("Hai terminato i minuti alti di fascia alta e di fascia bassa!");
    System.out.println("L'ammontare da pagare come spesa aggiuntiva e': " + plus + " Euro!");
    System.out.println("L'ammontare totale da pagare come spesa mensile e': " + tot + " Euro!");
    System.out.println();
    }
    1.2 (esatto)
    31.150002 (errato)
    cm mai? il risultato nn deve avere quel 2 alla fine! me lo fa solo nel caso in cui i minuti sn dispari

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    credo che sia a causa di un arrotondamento... Prova a limitare il numero di decimali...

  3. #3
    il fatto è ke il programma avendo in input 401 e 752 deve fare qs operazioni:

    else if (pmu > 400 && wnmu > 750)
    {

    plus = (((pmu - 400) * 0.40F) + ((wnmu - 750) * 0.40F));
    quindi otteniamo ke
    plus=((401-400)*0.40)+((752-750)*0.40))=(1*0.40)+)(2*0.40)=0.40+0.80=1.20


    tot = (flat + plus);
    tot=(29.95+1.20)=31.15

    cm può fare 31.150002???

  4. #4
    misteri del calcolatore cm dice il mio prof di ingegneria del software:"In un calcolatore c'è sempre un fattore esoterico..."

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    appunto tu metti che tot appaia con solo 2 decimali, dovrebbe essere questo il codice

    codice:
    NumberFormat formatter= NumberFormat.getNumberInstance();
    formatter.setMaximumFractionDigits(2);
    formatter.setMinimumFractionDigits(2);
    formatter.format(tot);

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.