Hola, pues bueno, haciendo lo que te dije en el post anterior:
QUOTE
lo que puedes hacer es guardar en un string el contenido de ShowLines, pero tendrias que modificar el metodo ShowLines para que te devuelva el string en vez de mostrarlo en pantalla
.
Primero que nada cambiamos el tipo de la funcion ShowLines de
void a
String:
CODE
public static String showLines(String fileName, int startLine, int endLine)
Ahora en el bucle:
CODE
while(currentLineNo<=endLine) {
line = in.readLine();
if (line==null) {
return;
}
Cambialo a
CODE
while(currentLineNo<=endLine) {
line = in.readLine();
if (line==null) {
return "";
}
es decir, poner las comillas al return (recuerda que tenemos que devolver una string, asi que al final del mismo, si todo salio bien y no hay excepciones retornamos el string line, para ello eliminamos la linea:
CODE
//System.out.println(line);
(la comenté) y al final del metodo ShowLines pones:
CODE
return line
.
Ya tenemos el metodo ShowLines devolviendonos el nombre del libro en vez de mostrarlo en pantalla, faltan 2 cosas: declarar un string para guardar el nombre del libro y corregir la sentencia if (yo en tu lugar usaria un switch) , de tal modo que quede mas o menos:
CODE
String nombreLibro = new String();
switch(numerolibro)
{
case 1:
nombreLibro=showLines("profiles.ini",0,0);
break;
case 2:
nombreLibro=showLines("profiles.ini",2,2);
break;
case 3:
nombreLibro=showLines("profiles.ini",4,4);
break;
case 4:
nombreLibro=showLines("profiles.ini",6,6);
break;
case 5:
nombreLibro=showLines("profiles.ini",8,8);
break;
default:
System.out.println("Numero de libro no existe");
}
Y por ultimo modificar el println para que muestre el nombre y no el numero:
CODE
System.out.println("El/La estudiante " + nombre + " " + apellido + " " + apellido2 + " con matricula " + matricula + " ha prestado el libro " + nombreLibro + " a la fecha del " + fechaprestamo);
Te dejó el codigo completo por si se me pasó algo:
CODE
//Aca es el codigo para leer una linea especifica del archivo//
import java.io.*;
import javagently.*;
class ProgramaBiblioteca {
public static String showLines(String fileName, int startLine, int endLine) {
String line = null;
int currentLineNo = 0;
BufferedReader in = null;
try {
in = new BufferedReader (new FileReader("ListadeLibros.txt"));
while(currentLineNo<startLine) {
if (in.readLine()==null) {
throw new IOException("Archivo demasiado pequeño");
}
currentLineNo++;
}
while(currentLineNo<=endLine) {
line = in.readLine();
if (line==null) {
return "";
}
//System.out.println(line);
currentLineNo++;
}
} catch (IOException ex) {
System.out.println("Hubo un Problema al leer el archivo.\n" + ex.getMessage());
} finally {
try { if (in!=null) in.close(); } catch(IOException ignore) {}
}
return line;
}
//Aca termina el codigo y empieza el programa//
//Aca comienza el codigo que va a leer todo lo que ingrese en el teclado y lo va a imprmir//
public static void main (String [] args) throws IOException {
InputStreamReader entrada=new InputStreamReader(System.in);
BufferedReader teclado=new BufferedReader(entrada);
BufferedReader in=Text.open(System.in);
System.out.println("Bienvenido al Programa Bibliotecario (Codigo fuente hecho por Blackmore)");
System.out.println();
Text.prompt("Escriba solo el primer nombre del estudiante: ");
String nombre=Text.readString(in);
System.out.println();
Text.prompt("Escriba su primer apellido: ");
String apellido=Text.readString(in);
System.out.println();
Text.prompt("Escriba su segundo apellido: ");
String apellido2=Text.readString(in);
System.out.println();
Text.prompt("Escriba su matricula: ");
String matricula=Text.readString(in);
System.out.println();
Text.prompt("Ingrese con numeros la fecha de hoy: ");
String fechaprestamo=Text.readString(in);
System.out.println();
Text.prompt("Escriba el numero del libro prestado: ");
int numerolibro=Text.readInt(in);
System.out.println();
String nombreLibro = new String();
switch(numerolibro)
{
case 1:
nombreLibro=showLines("profiles.ini",0,0);
break;
case 2:
nombreLibro=showLines("profiles.ini",2,2);
break;
case 3:
nombreLibro=showLines("profiles.ini",4,4);
break;
case 4:
nombreLibro=showLines("profiles.ini",6,6);
break;
case 5:
nombreLibro=showLines("profiles.ini",8,8);
break;
default:
System.out.println("Numero de libro no existe");
}
System.out.println();
System.out.println("El/La estudiante " + nombre + " " + apellido + " " + apellido2 + " con matricula " + matricula + " ha prestado el libro " + nombreLibro + " a la fecha del " + fechaprestamo);
}
}
//Fin del programa//
Por cierto, talvez te preguntes porque al metodo showLines le puse como parametros 0,0 2,2 4,4.. etc, pues bueno analizandolo bien si notas que es:
showLines(String FileName,
int StartLine,
int EndLine)
Osea que le estas pasando por parametro la primera linea a leer y la ultima, pero como solo nos interesa una, entonces la primera linea y la ultima seran siempre la misma :D, claro estoy tomando en cuenta que hay una linea en blanco entre libro y libro, por eso voy de 2 en 2.
Espero te sirva.
Saludos