Java: cosa strana.

Messaggioda Lionel » 06/02/2012, 16:46

Salve, non date importanza alla traccia che devo ancora finirla ma testate questo pezzo di codice, e ditemi perché funziona male...

Codice: Seleziona tutto
/*
* Scrivere un programma che chiede all'utente di inserire un numero n intero
* positivo, gli chieda di inserire n parole, e per ciascuna di esse stampi a
* video il numero totale di caratteri che la compongono, il numero di vocali ed
* il numero di consonanti. Al termine il programma deve stampare anche i valori
* totali (caratteri, vocali e consonanti).
*/
package esercizi;

import java.util.Scanner;

/**
*
* @author Lionel
*/
public class ContaCaratteri {
    public static void main(String []args){
        int numeroIntero;
        int i;
        int j;
        String stringa;
       
       
        Scanner in = new Scanner(System.in);
        i = 1;
        do{
            System.out.println("Inserisci il numero di parole da inserire: ");
            numeroIntero = in.nextInt();
            i++;
        }
        while(numeroIntero<=0);
               
        j=0;
        do{
            System.out.println("Inserisci la stringa " +j +": ");
            stringa = in.nextLine();
            j++;
        }
        while(j<=numeroIntero);
        }
   }


Come output ho il seguente

Inserisci il numero di parole da inserire:
1
Inserisci la stringa 0:
Inserisci la stringa 1:

Perché compare due volte quella scritta? E' un errore mio o un problema di Java? Se è di Java come lo si risolve?
Ho usato due indici perché con uno era ancora peggio...non consentiva proprio di immettere le parole..
Grazie mille.
Lionel
Junior Member
Junior Member
 
Messaggi: 263
Iscritto il: 19/11/2006, 11:47

Re: Java: cosa strana.

Messaggioda apatriarca » 06/02/2012, 19:45

Che scopo ha il contatore nel primo ciclo? Non viene usato all'interno del ciclo in nessun modo e neanche nel seguito. Nel secondo ciclo, è invece sbagliata la condizione del ciclo o il modo in cui viene inizializzato il contatore. Una successione di numeri che parte da 0 e termina con numeroIntero avrà numeroIntero+1 valori. Per cui è corretto il comportamento del tuo codice e sbagliata la tua logica. Inizializza j a 1 e ottieni il numero di iterazioni desiderate.
apatriarca
Moderatore
Moderatore
 
Messaggi: 2125
Iscritto il: 08/12/2008, 20:37
Località: Torino

Re: Java: cosa strana.

Messaggioda Lionel » 07/02/2012, 13:33

Allora sto rifacendo il programma da zero. E ho per il momento rifatto la prima parte e spero di averla resa più chiara. Fin qui non ci sono per il momento problemi.

Codice: Seleziona tutto
/*
* Scrivere un programma che chiede all'utente di inserire un numero n intero
* positivo, gli chieda di inserire n parole, e per ciascuna di esse stampi a
* video il numero totale di caratteri che la compongono, il numero di vocali ed
* il numero di consonanti. Al termine il programma deve stampare anche i valori
* totali (caratteri, vocali e consonanti).
*/
package esercizi;

import java.util.Scanner;

/**
*
* @author Lionel
*/
public class ContaCaratteri {
    public static void main(String []args){
        int numeroStringheDaInserire;
        int i;
       
        i = 0;
        Scanner in = new Scanner(System.in);
        do{
            System.out.println("Inserire un numero intero positivo che indichi il numero di stringhe che l'utente vorrà inserire sucessivamente: ");
            numeroStringheDaInserire = in.nextInt();
            if(numeroStringheDaInserire<=0){
                System.out.println("E' richiesto un numero intero positivo e maggiore di zero.");
            }
            i++;
        }
        while(numeroStringheDaInserire < 1);
        System.out.println("Il numero di stringhe che l'utente vuole immettere sono " +i +".");
    }
}.
Lionel
Junior Member
Junior Member
 
Messaggi: 263
Iscritto il: 19/11/2006, 11:47

Re: Java: cosa strana.

Messaggioda Lionel » 07/02/2012, 13:49

Alla fine ho risolto così, credo sia un problema di java.

Codice: Seleziona tutto
/*
* Scrivere un programma che chiede all'utente di inserire un numero n intero
* positivo, gli chieda di inserire n parole, e per ciascuna di esse stampi a
* video il numero totale di caratteri che la compongono, il numero di vocali ed
* il numero di consonanti. Al termine il programma deve stampare anche i valori
* totali (caratteri, vocali e consonanti).
*/
package esercizi;

import java.util.Scanner;

/**
*
* @author Lionel
*/
public class ContaCaratteri {
    public static void main(String []args){
        int numeroStringheDaInserire;
        int i;
        String stringaImmessa;
       
        i = 0;
        Scanner in = new Scanner(System.in);
        do{
            System.out.println("Inserire un numero intero positivo che indichi il numero di stringhe che l'utente vorrà inserire sucessivamente: ");
            numeroStringheDaInserire = in.nextInt();
            if(numeroStringheDaInserire<=0){
                System.out.println("E' richiesto un numero intero positivo e maggiore di zero.");
            }
            i++;
        }
        while(numeroStringheDaInserire < 1);
        System.out.println("Il numero di stringhe che l'utente vuole immettere sono " +i +".");
       
        i = -1;
        do{
            System.out.println("Immetti la stringa " +(i+1) +":");
            stringaImmessa = in.nextLine();
            i++;
        }
        while(i<numeroStringheDaInserire);
    }
}


Mandandolo in esecuzione succede questo:

run:
Inserire un numero intero positivo che indichi il numero di stringhe che l'utente vorrà inserire sucessivamente:
3
Il numero di stringhe che l'utente vuole immettere sono 1.
Immetti la stringa 0: E qui vi è quel maledettissimo problema perché non mi fa immettere la stringa ma va direttamente a capo. Anche come poi mi hai detto di correggere.
Immetti la stringa 1:
Pino
Immetti la stringa 2:
Lionel
Immetti la stringa 3:
Ciao
BUILD SUCCESSFUL (total time: 16 seconds)
Lionel
Junior Member
Junior Member
 
Messaggi: 263
Iscritto il: 19/11/2006, 11:47

Re: Java: cosa strana.

Messaggioda Lionel » 28/02/2012, 16:01

Ho trovato una soluzione più efficace, che ora posto nel caso qualcuno abbia lo stesso problema...

Codice: Seleziona tutto
/*
* Scrivere un programma che chiede all'utente di inserire un numero n intero
* positivo, gli chieda di inserire n parole, e per ciascuna di esse stampi a
* video il numero totale di caratteri che la compongono, il numero di vocali ed
* il numero di consonanti. Al termine il programma deve stampare anche i valori
* totali (caratteri, vocali e consonanti).
*/
package esercizi;

import java.util.Scanner;

/**
*
* @author Lionel
*/
public class ContaCaratteri {
    public static void main(String []args){
        int numeroIntero;
        int i;
        int j;
        String stringa;
       
       
        Scanner in = new Scanner(System.in);
        i = 1;
        do{
            System.out.println("Inserisci il numero di parole da inserire: ");
            numeroIntero = in.nextInt();
            i++;
        }
        while(numeroIntero<=0);
        in.nextLine(); // Risolto Così
               
        j=0;
        do{
            System.out.println("Inserisci la stringa " +j +": ");
            stringa = in.nextLine();
            j++;
        }
        while(j<=numeroIntero);
        }
   }
Lionel
Junior Member
Junior Member
 
Messaggi: 263
Iscritto il: 19/11/2006, 11:47


Torna a Informatica

Chi c’è in linea

Visitano il forum: Bonham e 0 ospiti