Programma in java

mpulcina
ciao a tutti, devo risolvere un esercizio in java e cioè: data una sequenza terminata da due numeri uguali, diversi da 0, scrivere un programma che conti gli zeri.
Io ho provato ha risolverlo così, ma c'è qualche piccolo errore perchè non mi aggiorna le x in y.
import java.util.*;
public class potenza {
public static void main(String[] args) {
Scanner k = new Scanner(System.in);
System.out.println("inserire una sequenza");
int x = k.nextInt();
int y = k.nextInt();
int cont=0;
if (x==0){
cont++;
}
while (x!=y || x==0) {
if (y==0) {
cont++;
x=y;
y = k.nextInt();
} else {
x=y;
}
System.out.println("vi sono" + cont + "zeri");
}
}
}
Sapete dirmi in cosa sbaglio?

Risposte
Darèios89
Ci sono diverse cose che non mi convincono, intanto perchè quella istruzione int y=....? In quel modo fai inserire due volte all' utente una sequenza, mi pare di avere capito che serve fare questo lavoro solo la prima volta. Io lo farei così, vedi se è corretto:

import java.util.*;
	public class Potenza{
		
		public static void main(String[] args) {
				Scanner k = new Scanner(System.in);
				System.out.println("inserire una sequenza");

				String x=k.next();

				int cont=0;

	
			for(int i=0; i<x.length(); i++)
			{
				if(x.charAt(i)=='0')
				cont++;
			}
	
		System.out.println("vi sono " + cont + " zeri");
		}
	}


Se hai dubbi chiedi pure.

mpulcina
però così non dico al programma di fermarsi appena incontra due numeri uguali...Mi conta solo gli zeri...

Darèios89
I numeri uguali sono sempre due numeri alla fine della sequenza che ne indicano la conclusione?

mpulcina
se ho una sequenza del tipo 1 0 2 0 3 4 4 6, la sequenza si ferma a 3 perchè 4 e 4 sono due numeri uguali e non fanno leggere il 6 che c'è dopo. quindi il mio contatore deve aggiornarsi a 2

Darèios89
Mh.....così come ti sembra?

import java.util.*;
	public class Potenza{
		
		public static void main(String[] args) {
				Scanner k = new Scanner(System.in);
				System.out.println("inserire una sequenza");

				String x=k.next();

				int zero=0;
			

	
			for(int i=0; i<x.length(); i++)
			{
				if(x.charAt(i)==x.charAt(i+1)&& i!=x.length()-1)
					break;
			
				if(x.charAt(i)=='0')
				zero++;
				
				
			}
	
		System.out.println("vi sono " + zero + " zeri");
		}
	}

scrittore1
ma perchè usare le stringhe se si tratta di numeri? Oltretutto con la soluzione di sopra, si possono solo inserire numeri ad una cifra... e se uno volesse inserire numeri più grandi? E come distinguere un numero dall'altro se sono tutti attaccati? E poi l'istruzione break non è consigliata in genere.

Io propongo:
public static void main(String args[])
    {
        Scanner s = new Scanner(System.in);
        int zeri=0;
        
        System.out.println("Inserisci la sequenza di numeri");
        int a=s.nextInt();
        if(a==0)
        {
            zeri++;
        }
        int b=a;

        a=s.nextInt();
        if(a==0)
        {
            zeri++;
        }

        while(!(a==b && a!=0))
        {
            a=s.nextInt();
            if(a==0)
            {
                zeri++;
            }
            b=a;   
        }
        System.out.println(zeri);


    }

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.