Java - Ayuda novato

 
Vista:
sin imagen de perfil

Ayuda novato

Publicado por Alessandro (10 intervenciones) el 16/10/2014 15:47:48
Hola a todos, soy un novato (italiano) que está intentando hacer un programa simple en java, pero no me sale…agradezco de antemano vuestra ayuda…

Estoy haciendo un programa gratis para la comunidad de vecinos. Tenemos unos datos que no cambian:

- static String[] pisos, che contiene el nombre de los pisos.
- static double[x][y] condicionesDePagamento, che contiene en las x el coeficiente de cada piso y en la y si el piso es exento de castos de tipo 3 con un 0 o con 1 si no exento

Lo que se debería hacer es pedir por teclado primero cuantos gastos se quieren introducir (lo he hecho con el modulo llegirNumGastosTeclat()) y luego el importe y tipo de gasto y registrarlos en un array. De allí, comparar el array con el static double[][] condicionesDePagamento y repartir el gasto.
Si el gasto introducido es de tipo 1, se reparte por todos los pisos según coeficiente (array [x]); si es de tipo 2 se reparte en partes iguales para todos los pisos; y si es de tipo 3 entonces se reparte solo para los pisos que tienen 1 en la [y] en partes iguales...

La descomposición seria la siguiente:

DISEÑO

(descripción: antes de todo se declararan las dos constantes en array. “Pisos” que contiene los nombres de todos los pisos y “pagos” (bidimensional) que contiene los coeficientes y tipo de gasto).

Calcular la repartición de los gastos por cada piso de una comunidad
(descripción: este es el main).

1. Presentar programa al usuario
(descripción: Es un simple print que explica el funcionamiento del programa, no sirven datos por parte del usuario)

2. Pedir cuantos gastos quiere introducir
(descripción: Este es un simple print con la pregunta de cuanto gastos se quieren introducir seguida se una lectura del escáner que guarda el valor en una variable “int numGastos”)

3. Pedir gastos
3.1 Pedir importe gasto
3.2 Pedir tipo gasto
3.3 Añadir importes y tipos gastos a la colección
(descripción: Este es un print con la pregunta del importe primero y tipo después, POR CADA GASTO. Se puede hacer con una estructura FOR guardando los datos obtenidos por teclado en un array bidimensional parecido al de “pagos”)

4. Calcular gastos por cada piso
5.1 si el tipo gasto es igual a A repartir en entre los pisos según coeficientes
5.1.1 Sumar datos a la colección “repartición gastos por piso”
5.2 si el tipo gasto es igual a B repartir en partes iguales a todos los pisos
5.2.1 Sumar datos a la colección “repartición gastos por piso”
5.3 si el tipo de gasto es igual a C repartir solo para los pisos no exentes de gastos C en partes iguales
5.3.1 Sumar datos a la colección “repartición gastos por piso”
(descripción: Aquí hay que recorrer el array obtenido en el punto 3 y calcular el contenido aplicando el criterio de los puntos 5.1, 5.2 y 5.3. Se obtendrá un array final con el importe total por cada piso.)

6. Mostrar por pantalla tabla final resumen importe total por piso
(descripción: Es un simple print que visualiza los importes de los nuevos gastos a pagar por cada piso)

Ambas colecciones de datos se relacionan por posición. Es decir, el piso o local nombrando como se indica en la posición n del vector pisos le corresponden las condiciones indicadas en la fila n de la matriz condicionesDePagamento. Por ejemplo el piso 1 º 1 ª (posición 5) tiene un coeficiente propiedad de 0,03253 y no se encuentra exento de los gastos C ya que a la segunda columna de la matriz se encuentra el valor 1 Por otra parte, el local izquierdo (Local Izq.) tiene una coeficiente de 0.0725 y se encuentra exento de pagar gastos de tipo C.

Hay que aclarar que el coeficiente está expresado en tanto por 1 y que como se indica en los comentarios del código, la segunda columna de la matriz condicionesDePagamento sólo puede coger los valores cero o uno. Cero implica que el piso o local se encuentra exento de pagar y 1 que no está exento.

Al ejecutarse la aplicación deberá informar al usuario de cuál es el objetivo del programa con un texto similar a:

Este programa permite calcular el importe que deberán abonar
los vecinos de una escalera en función de sus coeficientes y del
tipo de gasto que sea.
-------------------------------------------------- -----------
El programa le preguntará el número de gastos a imputar y
a continuación le pedirá el importe del gasto y el
tipo de la misma. Una vez entradas los datos se calcularán
los importes a cobrar en cada piso y local y se mostrarán las
cantidades obtenidas por pantalla.
-------------------------------------------------- -

Seguidamente habrá que pedir por teclado, cuantos gastos se quieren contabilizar y por cada una de ellas se pedirá cuál es su importe y cuál su tipo (A, B, o C). La aplicación, deberá calcular la cantidad que habrá que imputar a cada propietario. Finalmente se mostró una lista donde se relacionará el nombre de cada piso o local con la cantidad calculada.

La secuencia de demanda de datos debería ser similar a la siguiente:
El programa no me sale...solo he hecho lo siguiente:

Cuántas gastos deseas introducir?
(indica el número y pulsa [ENTRAR]): 2

Introduce el importe del gasto y pulsa [ENTRAR]: 12657.5

Indica el tipo de gasto que acabas de introducir (A / B / C) y pulsa [ENTRAR]: A

Introduce el importe del gasto y pulsa [ENTRAR]: 5783,0

Indica el tipo de gasto que acabas de introducir (A / B / C) y pulsa [ENTRAR]: B

Si el usuario no entra valores numéricos cuando se le piden habría que explicar que sólo admiten este tipo de datos y repetir la petición. Por ejemplo:

Introduce el importe del gasto y pulsa [ENTRAR]: No
Es necesario que introduzca un valor numérico
Introduce el importe del gasto y pulsa [ENTRAR]: _

De forma similar, será necesario asegurar que el tipo de gasto indicado por el usuario es el correcto. Si no lo fuera se recordarán los valores válidos y se tronara a pedir el tipo:

Indica el tipo de gasto que acabas de introducir (A / B / C) y pulsa [ENTRAR]: L
Los tipos de gasto sólo pueden ser A, B o C
Indica el tipo de gasto que acabas de introducir (A / B / C) y pulsa [ENTRAR]: _

Sin embargo, habrá que aceptar los valores entrados con independencia de que el usuario los escriba en mayúscula o minúscula.

Una vez hechos los cálculos se mostrará el detalle de gastos por piso o local. Por ejemplo:

Relación de los gastos detallados por propietario:

-Local Esq.: 1495.4350749999999
-Local Dre.: 1355.946515
-Entresòl 1a.: 1117.602313621739
-Entresòl 2a.: 1204.782663621739
-Entresòl 3a.: 1266.157630021739
-1r. 1a.: 1117.602313621739
-1r. 2a.: 1204.782663621739
-1r. 3a.: 1266.157630021739
-2n. 1a.: 1117.602313621739
-2n. 2a.: 1204.782663621739
-2n. 3a.: 1266.157630021739
-3r. 1a.: 1117.602313621739
-3r. 2a.: 1204.782663621739
-3r. 3a.: 1266.157630021739
-4t. 1a.: 1117.602313621739
-4t. 2a.: 1204.782663621739
-4t. 3a.: 1266.157630021739
-5è. 1a.: 1117.602313621739
-5è. 2a.: 1204.782663621739
-5è. 3a.: 1266.157630021739
-6è. 1a.: 1117.602313621739
-6è. 2a.: 1204.782663621739
-6è. 3a.: 1266.157630021739
-Àtic 1a.: 1501.021492921739
-Àtic 2a.: 1537.288518521739

El programa no me sale...solo he hecho lo siguiente:
import java.util.Scanner;
/**
*
* @author Alessandro
*/
public class EAC4Bloc2 {
static String[] pisos ={"Local Esq.", "Local Dre.", "Entresòl 1a.", "Entresòl 2a.", "Entresòl 3a.", "1r. 1a.", "1r. 2a.", "1r. 3a.", "2n. 1a.", "2n. 2a.", "2n. 3a.", "3r. 1a.", "3r. 2a.", "3r. 3a.", "4t. 1a.", "4t. 2a.", "4t. 3a.", "5è. 1a.", "5è. 2a.", "5è. 3a.", "6è. 1a.", "6è. 2a.", "6è. 3a.", "Àtic 1a.", "Àtic 2a."};
/**Col·lecció on es detallen les condicions de pagament d'acord amb el tipus de
*despesa. El primer valor de cada element de la matriu es correspon al
*coeficient de la superfície de cada pis o local (coeficient de propietat).
*El segon valor indica si per a despeses de tips C, el pis o local es troba
*exempt del seu pagament. Aquest eleemnt nomé admet 2 valors. 1 significa
*no exempt i 0 implica qie el local o pis es troba exempt del seu pagament.
*/
static double[][] condicionsDePagament = {
{0.0725, 0},
{0.0645, 0},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.03253, 1},
{0.03753, 1},
{0.04105, 1},
{0.05452, 1},
{0.05660, 1}
};
private static final int importeGastos [] = null;
private static final int tipoGastos [] = null;

public static void main(String[] args) {
EAC4Bloc2 programa = new EAC4Bloc2();
programa.inici();
}
void inici() {
presentacio();

int numGastos = llegirNumGastosTeclat();
llegirImporteTipoGasto(numGastos);

}
void presentacio(){
System.out.println("Aquest programa permet calcular l'import que hauran d'abonar \n"
+ "els veïns d'una escala en funció dels seus coeficients i del\n"
+ "tipus de despesa que sigui.");
System.out.println("-------------------------------------------------------------");
System.out.println("El programa us preguntarà el nombre de despeses a imputar i \n"
+ "tot seguit us demanarà l'import de la despesa i el \n"
+ "tipus de la mateixa. Un cop entrades les dades es calcularan \n"
+ "els imports a cobrar a cada pis i local i es mostraran les \n"
+ "quantitats obtingudes per pantalla.");
System.out.println("-------------------------------------------------------------\n");
}
public int llegirNumGastosTeclat() {

Scanner lector = new Scanner(System.in);
int numGastos = 0;
boolean llegit = false;
while (!llegit) {
System.out.println("Cuantos gastos quieres introducir?");
llegit = lector.hasNextInt();
if (llegit) {
numGastos = lector.nextInt();
} else {
System.out.println("Això no és un enter.");
lector.next();
}
}
lector.nextLine();

return numGastos;
}
public void llegirImporteTipoGasto(int numGastos) {
Scanner lector = new Scanner(System.in);
//Primer arreglo importe gastos
int importeGastos [] = new int[numGastos];
int tipoGastos [] = new int[numGastos];

for (int n = 0; n < importeGastos.length; n++) {
System.out.println("Introduzca el importe del gasto " + (n+1) + ":");
importeGastos [n] = lector.nextInt();
//Segundo arreglo tipo gastos
}
for(int i = 0;i < tipoGastos.length;i++) {
System.out.println("Introduzca el tipo del gasto " + (i+1) + ", donde A[1], B[2], C [3]:");
tipoGastos [i] = lector.nextInt();
}



//Mostramos los arreglos

System.out.println("Los gastos introducidos son: ");

for (int x=0; x < importeGastos.length; x++) {
System.out.println ("- Importe gasto " + (x+1) + ": " + importeGastos[x]);
}
for (int x=0; x < tipoGastos.length; x++) {
System.out.println ("- Tipo gasto " + (x+1) + ": " + tipoGastos[x]);
}
}

public void calcularGastosPisos() {
for (int x=0; x < tipoGastos.length; x++) {
if (tipoGastos [x] == 2) {
int gastosA = (importeGastos [x] / pisos.length);
System.out.println ("gastosA: " + gastosA);}}}}
// } else if ((tipoGastos [x] == 3) && (condicionsDePagament [x][x] == 1)) {
// int gastosC = gastosC + condicionsDePagament [x][x];
// }




/*private void mostrarResultado(){
System.out.println();
System.out.println("Listado de gastos a pagar");
System.out.println("---------------------------------------------------");
for(int i=0; i<pisos.length; i++){
System.out.print("\t-");
System.out.print(dades[i]);
System.out.println();

}
}
}
*/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda novato

Publicado por Fernando (82 intervenciones) el 17/10/2014 01:23:09
Hola alessandro, es de mucho agrado responder a tus inquietudes, el proyecto que tienes es muy interesante y me encantaria colaborarte, el problema que tengo es que no entiendo claramente si lo que necesitas es formar un equipo de personas que te ayuden a desarrollar la aplicacion, ya que el foro lo usamos para responder preguntas especificas en el caso que no sepas como hacer algo, de otra forma podriamos colabporar con tigo en el desarrollo pero quizas algunas personas te soliciten remuneracion por el tiempo empleado, avisame sobre tus consultas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda novato

Publicado por Alessandro (10 intervenciones) el 17/10/2014 09:32:20
Hola Fernando, lo siento, pensaba que era un for de ayuda gratuita...por este proyecrto en concreto no puedo pagar a nadie, porque como digo arriba es gratis. Pero está bien saberlo para mas adelante, en caso necesite una collaboracion en proyectos de pago.
Procedo con la remocion del hilo.

Gracias.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda novato

Publicado por Fernando (82 intervenciones) el 17/10/2014 17:03:39
Alessandro, con mucho gusto te podemos ayudar de forma gratuita, pero esta a yuda es a responder consultas o ayudarte con la logica o la mejor forma resolver problemas , lo que te explicaba es que si lo que quieres es que te ayudemos a hacer el proyecto lo que te recomiendo es que lo publiques en los proyectos para ver si los programadores tienen tiempo libre y ayudarte con el mismo de forma gratuita, asi te ayudaran a desarrollarlo, en este caso te recomiendo que si tienes consultas de un tema especifico , lo hagas en el foro , pero si lo que quieres es que te desarrollemos el proyecto hay un apartado para eso y los que tienen un poco de tiempo libre te ayudaran
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar