Subido por jose faneite

Arreglos en Java Clase Math Uso Scanner con Archivos

Anuncio
Arreglos, Métodos, Clase Math y
uso de Scanner para la lectura de
archivos en Java
Arreglos
Arreglo es una manera de agrupar de variables de un mismo tipo bajo un
mismo nombre. Para acceder a los valores individuales se asigna a cada
uno de ellos un número denominado índice, el cual comienza en cero. En
Java podemos de Vectores y Matrices.
Vectores declaración:
Tipo Identificador_Vector [ ] = new Tipo[tam];
int edad [ ] = new int [10];
int edad [ ] = {12, 5, 6, 15, 18, 25, 60, 34};
Matrices declaración:
Tipo Identificador_Matriz [ ][ ] = new tipo[Filas][Col];
float prom [ ][ ] = new float [3][4];
float valores [ ][ ] = {{1,2,3}, {10,-8,14}, {12,5,11));
Asignación por ciclos
Asumamos que hemos creado un objeto de la clase Scanner , entrada, para permitir la
entrada por teclado.
float p [ ] = new float[4];
for(int x = 0; x < p.length; x++) {
System.out.print(“p[“+x+”]: “)
p[x] = entrada.nextFloat( );
}
int k [ ][ ] = new int[3][4];
for(int x = 0; x < k.length; x++) {
for(int y = 0; y < p[0].length; y++) {
System.out.print(“k[“+x+”][“+y+”]: “)
k[x][y] = entrada.nextInt( );
}
}
Métodos
Métodos en Java: es un conjunto de instrucciones definidas dentro de una clase, que
realizan una determinada tarea y a las que podemos invocar mediante un nombre.
Cuando se llama a un método, la ejecución del programa pasa al método y cuando éste
termina, la ejecución continúa a partir del punto donde se produjo la llamada.
Métodos estático: método que puede ser accedido o invocado sin la necesidad de
tener que instanciar un objeto de la clase, es un método que pertenece a la clase y no
al objeto. Un método static solo puede acceder a variables o tipos de datos declarados
como static.
[acceso] static tipo nombre_método ([Parámetros]) {
Instrucciones;
return valor;
}
Parámetros: variables que almacenan los valores (argumentos) que el método recibe
por parte del código que la llama. Pueden ser tipos primitivo u objetos. En la
declaración del método, se escriben después del nombre entre paréntesis indicándose
el tipo de cada uno y su nombre. Los parámetros en Java se pasan por valor.
Clase Math
Método random
El método random de la clase Math nos devuelve un número
aleatorio entre 0 y 1, del tipo double
Si queremos generar valores diferentes, solo es necesario
multiplicarlo por el número que queramos que sea el
número más alto posible y/o sumarle (o restarle) algún
número para que el limite inferior sea otro distinto de 0.
Ejemplos: para generar reales entre 0 y 9
Para generar números enteros entre 1 y 10:
Scanner con Archivos
Definición:
Java proporciona en el paquete java.util una clase que se
denomina Scanner que nos permitirá leer datos desde
Archivos de texto . Los objetos de tipo Scanner mediante la
invocación de distintos métodos permitirán leer datos de
cualquier tipo (Cadenas, enteros, reales, etc.). Asimismo
permitirá leer un archivo de texto línea a línea, guardando
cada línea en un objeto de tipo String.
Para construir un objeto de tipo Scanner se invocará al
constructor de la clase pasándole como argumento un objeto
de tipo File (que se encuentra en el paquete java.io). Los
objetos de tipo File relacionan un Archivo con su nombre en
el sistema de archivos del computador. Ejemplo:
Scanner sc = new Scanner(new File("Datos.txt));
Uso de la clase Scanner
Como podemos observar en la tabla siguiente la clase Scanner nos permite leer en un
archivo de texto todo tipo de dato así como determinar si hemos leído en su totalidad
todo el archivo o no.
Tipo de dato
retornado
void
boolean
boolean
String
double
int
float
Método
close( ): Cierra el Scanner
hasNext( ): Retorna true si el Scanner a encontrado otra palabra
en el archivo
hasNextLine( ): Scanner retorna true si hay mas registros en el
archivo, en caso contrario false.
next( ): Scanner encuentra y retorna la siguiente palabra en el
archivo.
nextDouble( ): Scanner encuentra y retorna el siguiente valor en
doble precisión.
nextInt( ): Scanner encuentra y retorna el siguiente valor entero
en el archivo
nextFloat( ): Scanner encuentra y retorna el siguiente valor en
simple precisión.
Ejemplo
Enunciado:
Crear una aplicacion de consola en Java, que leera el archivo “Estudiantes.txt”,
el cual en cada registro guarda la siguiente informacion:
Nombre del estudiante, Nota parcial1, Nota parcial2
Cada campo del registro esta separado por un espacio en blanco
Para lo cual definineremos dos clase una llamada Colegio y otra llamada Principal.
Clase Colegio.
Tendra los siguientes métodos estáticos:
1. Que determine y retorne la cantidad de registros que hay en el archivo
“Estudiantes.txt”.
2. Que reciba dos arreglos uno de tipo de tipo String y una matriz de tipo doble en
los cuales almacenaremos respectivamente los nombres de los estudiantes y las
notas de los parciales , todo leido del archivo “Estudiantes.txt”.
3. Que reciba como parametros dos arreglos una matriz de tipo double y un vector
de tipo double, en este ultimo se almacenara la nota promedio obtenida por cada
estudiante en dos parciales la cuales estan almacenadas en la matriz.
4. Que muestre por consola, todo formateado, el nombre de los estudiantes, la nota
obtenida en los dos parciales y la nota promedio.
Clase Principal
Se definiran los arreglos necesarios, y se invocaran los metodos definidos en Colegio
Definimos la clase Colegio
1. Creación del proyecto
a) Menu File → New Project → Categories: Java → Projects: Java Applications →
Next
b) Projects Name: Manejo_Archivo → Desmarcar Create Main Class → Finist.
2. Creación Clase Colegio
a) Menu File → New File → Categories: Java → File Type: Java Class → Next
b) Class Name: Colegio → Package: PColegio → Finist
package PColegio;
public class Colegio {
}
Clase Colegio
package PColegio;
import java.io.*;
import java.util.*;
public class Colegio {
//Metodo que determina la cantidad de registros en Estudiantes.txt
public static int cReg( ) throws IOException {
Scanner en = new Scanner(new File("Estudiantes.txt"));
int cr=0;
while (en.hasNextLine( )) {
en.nextLine( );
cr++;
}
en.close( );
return cr;
} // Fin metodo cReg
/*Método que lee el contenido de Extudiante.txt y almacena su contenido
*en dos arreglos uno un vector de tipo String y otro una matiz de
*tipo double
*/
public static void leoAlumnos(String n[ ], double nf[ ][ ]) throws IOException {
Scanner en = new Scanner(new File("Estudiantes.txt"));
int f = 0;
while (en.hasNext( )) {
n[f] = en.next();
for (int i = 0; i < nf[0].length; i++) {
nf[f][i] = en.nextDouble( );
}
f++;
}
en.close();
} // Fin método leoAlumnos
/* Metodo que recibe dos arreglos una matriz de tipo double
* y un vector de tipo double donde se almacenara la nota promedio
* de cada alumno
*/
public static void calProm(double nf[ ][ ], double pr[ ]) {
double s;
for (int i = 0; i < nf.length; i++) {
s = 0;
for (int j = 0; j < nf[0].length; j++) {
s += nf[i][j];
}
pr[i] = s/nf[0].length;
}
} // Fin metodo CalProm
/* Metodo que recibe tres arreglos uno de tio String, una matriz de
* tipo double y un vector de tipo double donde de almacenan
* respectivamente los nombres de los estudiantes, sus notas parciales
* y el promedio de dichas notas.
*/
public static void mostrar(String n[ ], double nf[ ][ ], double pr[ ]) {
System.out.println("Nombre
PP1 PP2 Nota final");
for (int i = 0; i < n.length; i++) {
System.out.printf("%-12s",n[i]);
for (int j = 0; j < nf[0].length; j++) {
System.out.printf("%7.2f ",nf[i][j]);
}
System.out.printf(" %7.2f \n",pr[i]);
}
} //Fin del metodo mostrar
} //Fin Clase Colegio
Definimos la clase Principal
1. Creación Clase Principal
a) Menu File → New File → Categories: Java → File Type: Java MainClass → Next
b) Class Name: Principal → Finist
public class Principal {
public static void main(String[ ] args) throws IOException {
} //Fin metodo main
} //Fin clase Principal
Clase Principal
import PColegio.*;
import java.io.*;
public class Principal {
public static void main(String[ ] args) throws IOException {
int cf;
cf = Colegio.cReg();
String no[ ] = new String[cf];
double notaF[ ][ ] = new double[cf][2];
double pro[] = new double[cf];
Colegio.leoAlumnos(no, notaF);
Colegio.calProm(notaF, pro);
Colegio.mostrar(no, notaF, pro);
} //Fin metodo main
} //Fin clase Principal
Salida Formateada por Consola
Nombre
PP1
PP2
Nota final
Lopez
12.50
13.00
12.75
Ana
13.70
9.50
11.60
Juan
18.00
17.60
17.80
9.30
12.30
10.80
Roberto
Descargar