
Consulta con bucles
Publicado por Luciano (1 intervención) el 01/12/2014 17:23:04
Hola, soy nuevo por aquí y en este tema de programar en Java, y ya me han matado con un ejercicio super largo con arraylist. El caso es que tengo un problema. Tengo un menú en el que:
1 - Cargo por teclado el arraylist con números infinitamente hasta que ingreso 0 (El cero no se carga)
2 - La suma de todos los valores del arraylist
3 - Promedio de todos los valores del arraylist
4 - Lista con todos los índices y su respectivo valor
5 - Buscar un índice y que salga su valor
6 - Cantidad de números positivos y negativos además de mostrar el tamaño del arraylist
El problema es con el 2 y el 3, ya que (por ejemplo), al cargar los números 10 y 20, y luego seleccionar la opción de sumar, al principio da 30 (como debería). Pero si sigo seleccionándola, empieza a sumar de a 30, pero yo solo quiero que muestre la suma de todos los valores, pero no que siga sumando ese producto.
Los mismo sucede con el 3, el promedio que hace cada vez que se selecciona es primero hacer el promedio de 30 y luego el de 60, 90, 120...
También un problema con el 6: Cambié el código varias veces y lo único que sale bien es el tamaño del arraylist, pero de una forma u otra solo aparece la cantidad de positivos; pero la de negativos en 0 y viceversa.
Aquí dejo el código que se entenderá mejor de lo que expliqué xD:
import java.util.*;
import java.util.ArrayList;
public class MenúPersonas {
public static void main(String[] args) {
// TODO Auto-generated method stub
int numero = 0, op = 0, suma = 0, promedio = 0, contador = 0, contadoríndice = 0, índice = -1, valor = 0, pos = 0, neg = 0, cero = 0;
String op1, y = null, n;
Scanner input = new Scanner (System.in);
ArrayList<Integer> arl = new ArrayList<Integer>();
System.out.println("--- Menú ---");
System.out.println(" ");
System.out.println("1 - Ingreso de números");
System.out.println(" ");
System.out.println("2 - Suma");
System.out.println(" ");
System.out.println("3 - Promedio");
System.out.println(" ");
System.out.println("4 - Lista");
System.out.println(" ");
System.out.println("5 - Índice");
System.out.println(" ");
System.out.println("6 - Cantidad");
System.out.println(" ");
do{
System.out.print("Opción: ");
op = input.nextInt();
System.out.println(" ");
switch (op){
case 1:
do{
System.out.println("Ingresar");
numero = input.nextInt();
if(numero != 0){arl.add(numero);}
}while(numero != 0);
break;
case 2:
for(int i: arl){
suma = suma + i;
}
System.out.println(' ');
System.out.println("Suma: " + suma);
System.out.println(' ');
break;
case 3:
for (int i = 0; i < arl.size(); i++) {
contador = contador + arl.get(i);
}
promedio = contador/arl.size();
System.out.println(" ");
System.out.println("Promedio: " + promedio);
System.out.println(" ");
break;
case 4:
for (Integer número : arl) {
if(número != 0){
índice++;
System.out.println("Índice " + índice + " = " + número);}
}
System.out.println(" ");
break;
case 5:
System.out.println("Ingresar índice: ");
System.out.println(" ");
índice = input.nextInt();
if (índice != -1){
if(índice < arl.size()){
System.out.println(" ");
System.out.println("Índice " + índice + " con valor " + arl.get(numero));}
System.out.println(" ");
}
if(índice > arl.size()){
System.out.println("Éste índice no existe");
System.out.println(" ");
}
if (índice == arl.size()){System.out.println("Éste índice no existe");
System.out.println(" ");}
break;
case 6:
for (int i = 0; i < arl.size(); i++) {
if (arl.get(numero) > 0) {
pos++;}
if (arl.get(numero) < 0) {
neg++;}
}
//mostrar resultados
System.out.println("Números positivos: " + pos);
System.out.println("Números Negativos: " + neg);
System.out.println("Tamaño de arl: " + arl.size());
break;
default:
System.out.println("***ERROR*** Elija otra opción");
System.out.println(" ");
}
}while (op != 0);
}
}
Espero obtener ayuda a la brevedad. Se que deben ser errores pequeños. Saludos
1 - Cargo por teclado el arraylist con números infinitamente hasta que ingreso 0 (El cero no se carga)
2 - La suma de todos los valores del arraylist
3 - Promedio de todos los valores del arraylist
4 - Lista con todos los índices y su respectivo valor
5 - Buscar un índice y que salga su valor
6 - Cantidad de números positivos y negativos además de mostrar el tamaño del arraylist
El problema es con el 2 y el 3, ya que (por ejemplo), al cargar los números 10 y 20, y luego seleccionar la opción de sumar, al principio da 30 (como debería). Pero si sigo seleccionándola, empieza a sumar de a 30, pero yo solo quiero que muestre la suma de todos los valores, pero no que siga sumando ese producto.
Los mismo sucede con el 3, el promedio que hace cada vez que se selecciona es primero hacer el promedio de 30 y luego el de 60, 90, 120...
También un problema con el 6: Cambié el código varias veces y lo único que sale bien es el tamaño del arraylist, pero de una forma u otra solo aparece la cantidad de positivos; pero la de negativos en 0 y viceversa.
Aquí dejo el código que se entenderá mejor de lo que expliqué xD:
import java.util.*;
import java.util.ArrayList;
public class MenúPersonas {
public static void main(String[] args) {
// TODO Auto-generated method stub
int numero = 0, op = 0, suma = 0, promedio = 0, contador = 0, contadoríndice = 0, índice = -1, valor = 0, pos = 0, neg = 0, cero = 0;
String op1, y = null, n;
Scanner input = new Scanner (System.in);
ArrayList<Integer> arl = new ArrayList<Integer>();
System.out.println("--- Menú ---");
System.out.println(" ");
System.out.println("1 - Ingreso de números");
System.out.println(" ");
System.out.println("2 - Suma");
System.out.println(" ");
System.out.println("3 - Promedio");
System.out.println(" ");
System.out.println("4 - Lista");
System.out.println(" ");
System.out.println("5 - Índice");
System.out.println(" ");
System.out.println("6 - Cantidad");
System.out.println(" ");
do{
System.out.print("Opción: ");
op = input.nextInt();
System.out.println(" ");
switch (op){
case 1:
do{
System.out.println("Ingresar");
numero = input.nextInt();
if(numero != 0){arl.add(numero);}
}while(numero != 0);
break;
case 2:
for(int i: arl){
suma = suma + i;
}
System.out.println(' ');
System.out.println("Suma: " + suma);
System.out.println(' ');
break;
case 3:
for (int i = 0; i < arl.size(); i++) {
contador = contador + arl.get(i);
}
promedio = contador/arl.size();
System.out.println(" ");
System.out.println("Promedio: " + promedio);
System.out.println(" ");
break;
case 4:
for (Integer número : arl) {
if(número != 0){
índice++;
System.out.println("Índice " + índice + " = " + número);}
}
System.out.println(" ");
break;
case 5:
System.out.println("Ingresar índice: ");
System.out.println(" ");
índice = input.nextInt();
if (índice != -1){
if(índice < arl.size()){
System.out.println(" ");
System.out.println("Índice " + índice + " con valor " + arl.get(numero));}
System.out.println(" ");
}
if(índice > arl.size()){
System.out.println("Éste índice no existe");
System.out.println(" ");
}
if (índice == arl.size()){System.out.println("Éste índice no existe");
System.out.println(" ");}
break;
case 6:
for (int i = 0; i < arl.size(); i++) {
if (arl.get(numero) > 0) {
pos++;}
if (arl.get(numero) < 0) {
neg++;}
}
//mostrar resultados
System.out.println("Números positivos: " + pos);
System.out.println("Números Negativos: " + neg);
System.out.println("Tamaño de arl: " + arl.size());
break;
default:
System.out.println("***ERROR*** Elija otra opción");
System.out.println(" ");
}
}while (op != 0);
}
}
Espero obtener ayuda a la brevedad. Se que deben ser errores pequeños. Saludos
Valora esta pregunta


0