Calcular y mostrar el tiempo de alquiler de una maquina
Publicado por Geraldine (25 intervenciones) el 15/10/2018 23:01:46
Como están compañeros? Tengo el siguiente problema, tengo un error en la linea 50.
Resulta que al yo eliminar el ciclo for me muestra en orden el nombre de cada maquina. Sin embargo, la idea es que también me muestre las horas y el monto de cada una. Realmente no se por que con el ciclo for no me muestra las horas.
Principal
La salida debería quedarme expresada así:
https://ibb.co/eOQHO0
Resulta que al yo eliminar el ciclo for me muestra en orden el nombre de cada maquina. Sin embargo, la idea es que también me muestre las horas y el monto de cada una. Realmente no se por que con el ciclo for no me muestra las horas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package Centro;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
public class Maquinas {
private static File archivo = new File("Maquinas.txt");
//1-Determinar la cantidad de registros en el archivo:
public static int cantReg() throws IOException {
int contador = 0;
try {
BufferedReader br = new BufferedReader(new FileReader(archivo));
String linea = br.readLine();
while (linea != null) {
contador++;
linea = br.readLine();
}
br.close();
} catch (FileNotFoundException e) {
System.err.println("No se encontro el archivo: " + archivo.getAbsolutePath());
} catch (IOException e) {
System.err.println("Error de lectura en archivo: " + archivo.getAbsolutePath());
}
return contador;
}
//2-Crear un vector tipo String que almacena el nombre y una matri tipo entero
//donde se almacenara las horas y minutos, tanto de inicio como de fin:
public static void leerMaquinas(String maq[], int alq[][]) throws FileNotFoundException {
int fila = 0;
try {
BufferedReader br = new BufferedReader(new FileReader(archivo));
String linea = br.readLine();
final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(Locale.FRANCE);
while (linea != null) {
String[] datos = linea.split(",");
maq[fila] = datos[0];
for (int i = 0; i < alq[0].length; i+=2) {
alq[fila][i] = Integer.parseInt(linea.substring(0,2));
alq[fila][i+1] = Integer.parseInt(linea.substring(3));
}
fila++;
linea = br.readLine();
}
br.close();
} catch (FileNotFoundException e) {
System.err.println("No se encontro el archivo: " + archivo.getAbsolutePath());
} catch (IOException e) {
System.err.println("Error de lectura en archivo: " + archivo.getAbsolutePath());
} catch (NumberFormatException e) {
System.err.println("Error en dimensiones en registro: #" + fila);
}
}
//3-Creamos una matriz tipo entero con horas de inicio y fin del alquiler y un
//vector tipo entero que almacene la duracion del alquiler:
public static void duracionAlq(int alq[][], int dura[]) {
for (int i = 0; i < alq.length; i++) {
for (int j = 0; j < alq[0].length; j += 2) {
dura[i] = alq[i][j] * 60 + alq[i][j + 1] - dura[i];
}
}
}
//4-Que reciba como parámetros un vector de tipo entero donde se almaceno
//el tiempo que duro el alquiler en minutos y un vector de tipo float donde
//se almacene por cada alquiler el monto a cancelar
public static void calMonto(int dura[], double monto[]) {
//variables:
int mh, mm;
for (int i = 0; i < dura.length; i++) {
monto[i] = dura[i] / 60 * 3 + (dura[i] % 60) / 15 * 0.75;
if (((dura[i] % 60) % 15) % 15 > 0) {
monto[i] += 0.75;
}
}
}
//5-Mostramos por consola las maquinas, la duracion del alquiler y el monto a pagar:
public static void mostrar(String maq[], int dura[], double monto[]) {
//Variables:
int h, m;
double total = 0;
System.out.println("\n\nNombre Duracion(hh:mm) Monto(Bs.S)");
//Organizamos los nombres:
for (int i = 0; i < maq.length; i++) {
System.out.printf("%-10s", maq[i]);
h = dura[i] / 60;
m = dura[i] % 60;
System.out.printf("%3d:%3d", h, m);
System.out.printf("15.2f\n", monto[i]);
total += monto[i];
}
System.out.println("Total facturado: " + total + "Bs.S");
}
}
Principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package Centro;
import java.io.IOException;
import java.util.Locale;
public class Principal {
private static String[] maquinas;
private static int[][] alquileres;
public static void main(String[] args) throws IOException {
Locale.setDefault(Locale.US);
int numeroRegistros = Maquinas.cantReg();
//Declaramos nuevas variables:
maquinas = new String[numeroRegistros];
alquileres = new int[numeroRegistros][4];
int duracion[] = new int[numeroRegistros];
double monto[] = new double[numeroRegistros];
//Mostramos por consola:
Maquinas.leerMaquinas(maquinas, alquileres);
Maquinas.duracionAlq(alquileres, duracion);
Maquinas.calMonto(duracion, monto);
Maquinas.mostrar(maquinas, duracion, monto);
}
}
La salida debería quedarme expresada así:
https://ibb.co/eOQHO0
- Maquinas.rar(203,0 B)
Valora esta pregunta
0