Es 6 Lez 10

Blog Forum Java Es 6 Lez 10

  • Il topic è vuoto.
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #5568
    Luca Brunetti
    Ospite
    Up
    0
    Down
    ::

    Gentile prof. Pagano
    l’esercizio prevede:
    Scrivi un programma Java che legge un anno dall’utente e stampa se quell’anno è un anno bisestile o meno. Un anno è bisestile se è divisibile per 400; altrimenti sono bisestili solo gli anni divisibili per 4 ma non per 100.

    Ho provato a scriverlo, ma non capisco dove è l’errore.
    Sicuramente è un problema con le boolean, ma non so come correggerlo.

    riporto lo sviluppo:
    package com;
    import java.util.Scanner;

    public class esercizi {

    public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    System.out.println(“Inserisci il numero di un anno, e saprai se è bisestile o meno”);
    int a = scan.nextInt();

    // variabili per calcolo anni bisestili
    float x = 400;
    float y = 4;

    float r=a%x; // riferimento ai secolari
    float s=a%y; // riferimento ai bisestili

    boolean c = true;
    if(s==0) {}

    boolean d= true;
    if(r==0) {}

    if ( c == d) {
    System.out.println ( a + ” è un anno bisestile”);
    }

    if ( c != d) {
    System.out.println ( a + ” è un anno bisestile”);
    }

    }}

    Una cosa che aiuterebbe molto ma non ho trovato sarebbe avere una “funzione” che ti permette di stampare se è vero l’uno o l’altro, in questo modo sarebbe si accorciato l’ultimo passaggio.

    attendo sue
    cordiali saluti
    Luca Brunetti

    #5569
    ANTONIO PAGANO
    Ospite
    Up
    0
    Down
    ::

    Ciao, l’errore sulle variabili booleane è che, una volta create, non vengono mai usate.
    Di seguito una possibile soluzione:

    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    
    		System.out.println("Inserisci il numero di un anno, e saprai se è bisestile o meno");
    		int a = scan.nextInt();
    
    		
    		float r = a % 400; // riferimento ai secolari
    		float s = a % 4; // riferimento ai bisestili
    		float t = a % 100;
    		
    		boolean bisestile = false;
    		
    		if (r == 0) { // divisibile per 400
    			bisestile = true;
    		} else {
    			
    			if (s == 0 && t != 0) {// divisibile per 4 ma non per 100
    				bisestile = true;
    			}
    
    		}
    		if (bisestile) {
    			System.out.println(a + " è un anno bisestile");
    		} else
    			System.out.println(a + " NON è un anno bisestile");
    
    	}
Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.