Visualizzazione dei risultati da 1 a 8 su 8

Discussione: esercizio in java

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    49

    esercizio in java

    Ciao a tutti volevo chiedere a qualcuno che mastica java più di me se mi aiuta a risolvere questo esercizio ...... devo are un esame e sono molto indietro .......



    Definire una classe MaxDiff il cui main:

    - legge da tastiera una sequenza di numeri interi terminata da un non intero
    - calcola la differenza fra il numero più grande e il numero più piccolo della sequenza (0 se la sequenza contiene solo un elemento)
    - visualizza a video il risultato .


    I miei innumerevoli tentativi sono arrivati a questa soluzione che posto , peraltro sbagliata ...... aiutatemi per piacere .... !!!

    import java.util.Scanner;

    public class MaxDiff{

    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    System.out.println("Immettere una sequenza di interi di almeno un elemento " +
    "terminata da una parola o da un non-intero:");

    while(!input.hasNextInt()) { // mentre l'utente digita caratteri che non
    // corrispondono a numeri interi, svuota il buffer
    // (senza salvare l'input perche' va ignorato)
    input.next();
    System.out.println("immetti almeno un intero"); // segnala l'errore a video
    }

    // int max , Min = Integer.MIN_VALUE; // inizializza x e max con il primo numero digitato
    int x , y , max = 0 , min = 0 ;

    while(input.hasNextInt()) {
    x = input.nextInt(); // legge un nuovo numero da tastiera
    if(x > max) max = x;
    // se il nuovo numero e' piu' grande del max, aggiorna max

    else if ( x < max ) x = min ;

    }
    System.out.println("Il massimo e' " + max);
    System.out.println("Il minimo e' " + min);


    }
    }

    /*Devo ancora fare la differenza ......
    */

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    13
    ci sono solo un paio di errori nel tuo codice, e poi potrebbe anche funzionare.

    uno:

    codice:
    int x  , max =Integer.MIN_VALUE , min = Integer.MAX_VALUE;
    due:

    codice:
    else if ( x < min ) min=x;

    se fai queste correzioni dovrebbe funzionare, anche se magari non è elegantissimo....

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    49

    ci siamo quasi

    il valore masimo mi viene giusto ma il minimo ( qualsiasi sequenza di interi io abbia inserito ) mi da sempre lo stesso valore che è : 2147483647

    Grazie mille !!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    49
    il primo numero se non è il minore della sequenza prende il valore assegnato .
    In pratica se la sequenza ha come minimo il primo numero inserito allora Min è uguale al valore assegnato ovvero quel numerone enorme
    Se , invece , il minimo è in mezzo o alla fine della sequenza l'esercizio funziona ..... mmmmah ... suggerimenti ?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Posta il codice con le correzioni che hai fatto (usando i tag CODE), altrimenti è impossibile capire dove sia l'errore, se l'unico codice a nostra disposizione non è quello che stai usando tu.


    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

  6. #6
    il primo elemento è obbligatoriamente sia il massimo che il minimo.
    togli l'else

    codice:
    if(x > max)
       max = x;
    if (x < min)
       min = x;
    o in alternativa inizializzi massimo e minimo con il primo valore inserito.

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    13
    hai corretto per bene questa linea di codice?

    codice:
    else if ( x < min ) min=x;
    nella tua prima versione era:

    codice:
    else if ( x < max ) x = min ;
    e come puoi ben capire....non è affatto molto logica! non ha nessun senso

    edit: si scusa, dovresti anche togliere "else if" e lasciare solamente "if"

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    49

    risolto

    Grazie milleeeeeeeeeeeeeeeeeeeeeeeeeeee risoltoooooooooooooooooooooooooooooooooooooooooooo oooooooooo
    Grandiiiiiii !!!!

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.