Ayuda novato!

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;
public class comunidad {
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."};
/**Array donde se detallan las condiciones de pago según el tipo de gasto. El primer valor de cada *elemento de la matriz se corresponde al
*coeficiente de la superficie de cada pis o local (coeficiente de propiedad).
*El segundo valor indica si per los gastos de tipo C, el piso o local es
*exento del pago. Este elemento admite 2 valores. 1 significa
*no exento i 0 implica que el local o pis es exento del pagamento.
*/
static double[][] condicionesDePago = {
{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}
};
public static void main(String[] args) {
comunidad programa = new comunidad();
programa.inici();
}
void inici() {
presentacio();
int numGastos = llegirNumGastosTeclat();
int [][] gastos = llegirImporteTipoGasto (numGastos);
mostrarResultado (dades);
}
void presentacio(){
System.out.println("Programa para calcular reparticion de gastos de la comunidad");
System.out.println("-------------------------------------------------------------");
System.out.println("Permite introducir el número, importe y tipo de gastos");
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 int [][] llegirImporteTipoGasto(int numGastos) {
Scanner lector = new Scanner(System.in);
int gastos [][] = new int [numGastos][numGastos];
for (int x=0; x < numGastos; x++) {
System.out.println("Introduzca el importe del gasto " + x + ":");
gastos [x][0] = lector.nextInt();
}
for (int y=0; y < numGastos; y++) {
System.out.println("Introduzca el la tipologia del gasto " + y + ": A[1] - B [2] - C[3]: ");
gastos [0][y] = lector.nextInt();
}
lector.nextLine();
for (int x=0; x < gastos.length; x++) {
for (int y=0; y < gastos[x].length; y++) {
System.out.println ("[" + x + "," + y + "] = " + gastos[x][y]);
}
}
return gastos;
}