Escriba un programa que solicite números enteros entre 1 y 100 de forma continua hasta que el usuario ingrese el valor de 0. El programa debe determinar las incidencias de cada número de 1 a 100 en los números ingresados. Por ejemplo si se ingresa 1, 1, 4, 5, 6, 20, 20, 1, 1. La salida del programa seria:
Incidencia de 1 es 4
Incidencia de 4 es 1
Incidencia de 5 es 1
Incidencia de 6 es 1
Incidencia de 20 es 2
no se hacen tareas, indica tu problema y lo que llevas hecho
Hola buenas este es mi codigo:
public class Ejercicio12 {
static int rep=0;
public static void main(String[] args)
{
Scanner linea = new Scanner(System.in);
int [] numd=new int[4];
System.out.println("Introduce los número:");
for(int i=0;i<numd.length;i++){
numd[i] = linea.nextInt();
int rep=0;
for(int j=0;j<numd.length-1;j++){
if(i!=j){
if(numd[i]==numd[j]){
}
}
}
}
int n=numd.length;
for (int k=0;k<=n-1;k++){
if(numd[k]==numd[k]){
rep ++;
System.out.println("Incidencia de "+ numd[k] +" es "+rep);
}
}
}
}
Esto me imprime en pantalla:
Introduce los número:
2
2
3
3
Incidencia de 2 es 1
Incidencia de 2 es 2
Incidencia de 3 es 3
Incidencia de 3 es 4
Mi problema es que no entiendo como hacer que se sume la repetición de un mismo numero y que solo me imprima el numero repetido una vez tal como aparece en el ejercicio expuesto.
· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex
para contar las incidencias, depende del caso, un camino por ejemplo es:
despues de llenar el array, lo organizas y cuentas cada aparicion, simplemente si el numero actual es igual al anterior, se suma uno para ese numero, si es diferente, imprimes cuantos conseguiste del anterior y empiezas a sumar los nuevos
Para empezar parece que numd tiene un tamaño predefinido de 4, que igual no es lo que necesitas; te recomiendo que uses un arraylist o algún tipo de collection ya que son dinámicas.
Un error que veo es que en la línea 22 estás comparando numd[k] con numd[k], y eso siempre es TRUE porque estás comparando el mismo número.
De todas formas te aconsejo que revises un poco el algoritmo; quizás te vendría bien plantearlo en papel antes de codificar.
Aquí la solución al ejercicio espero le sirva de ayuda alguien mas saludos.
public class Ejercicio2 {
public static void main(String args[]) throws IOException {
BufferedReader bufEntrada = new BufferedReader(new InputStreamReader(System.in));
int frecuencia[];
int i;
int n;
int num = 1;
frecuencia = new int[100];
System.out.println("Digite los Numeros entre 1 y 100");
n = 99;
for (i=1;i<=n;i++) {
frecuencia[i] = 0;
}
for (i=1;i<=n;i++) {
if (num!=0){
num = Integer.parseInt(bufEntrada.readLine());
}
if (num>=1 && num<=99) {
frecuencia[num] = frecuencia[num]+1;
}
}
System.out.println("Las incidencias de los numeros son :");
for (i=1;i<=n;i++) {
if (frecuencia[i]==0) {
System.out.print("");
} else {
System.out.println("Incidencia de "+i+" es "+frecuencia[i]);
}
}
}
}
· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex