Ler e imprimir arquivo texto em tela

7 respostas
J

boa tarde

tenho que ler o seguinte arquivo texto e imprimir na tela

2.01.12/Brisbane/Australia/250/434250.0/Andy Murray
02.01.12/Chennai/India/250/398250.0/Milos Raonic
02.01.12/Doha/Qatar/250/1024000.0/Jo Wilfried Tsonga
09.01.12/Heineken Open/New Zealand/250/398250.0/David Ferrer
09.01.12/Apia Int. Sydney/Australia/250/434250.0/Jarkko Niemin

o codigo utilizado e esse

public class Arquivo{ public static void main(String[] args) throws IOException { BufferedReader in1 = new BufferedReader(new FileReader("atp.txt")); String s1; String[] p1; int j=0; try { while((s1=in1.readLine())!=null){ p1 = s1.split("/"); System.out.println(p1[j]); j++; } if(s1 == null){ in1.close();} }catch (Exception e){System.out.println("Excecao\n");} } }

so que nao imprimi o arquivo na tela,no caso queria que saisse assim
02.01.12
Bribane
.
.ate
.
Jarkko Niwminen

mas a saida e esta
02.01.12
Chennai
Qatar
250
434250.0

esta pegando pedaços e nao o arquivo inteiro se puderem me ajudar ?

7 Respostas

romarcio

Pelo que vi o problema está aqui:

while((s1=in1.readLine())!=null){ p1 = s1.split("/"); System.out.println(p1[j]); j++; }

Você deve receber a linha em p1 e fazer um for em p1 para imprimir os dados dele. O que está fazendo é ler a linha, imprime 1 posição do p1 e depois já lê a próxima linha.
Faça um for para p1 dentro do while, depois que p1 recebe a linha do arquivo.

quil

Tente fazer desse jeito:

import java.io.*;

public class Arquivo{
public static void main(String[] args) throws IOException {
 BufferedReader in1 = new BufferedReader(new FileReader("atp.txt"));
 String s1;
 String[] p1;
 int j=0;
 int b = 0;
   try {         
		    while((s1=in1.readLine())!=null){
               p1 = s1.split("/");
			   while(p1 != null){
			   
		       System.out.println(p1[j]);
			   j++; 			 
					}
					
					b++; 			 
              }             			  
       if(s1 == null){ in1.close();}     
          }catch (Exception e){System.out.println("Excecao\n" + e);
		  }
        }
      }
J

tentei isso mas nao deu certo veja se e assim que deve ficar o codigo

while((s1=in1.readLine())!=null){              
		       
	 for(int i=0;i<5;i++) {  			   			   
               p1=s1.split("/");
                System.out.println(p1[j]);
}
             j++;}  	
			
             System.out.println(j);

vlw

romarcio

jobs:
tentei isso mas nao deu certo veja se e assim que deve ficar o codigo

while((s1=in1.readLine())!=null){              
		       
	 for(int i=0;i&lt;5;i++) {  			   			   
               p1=s1.split("/");
                System.out.println(p1[j]);
}
             j++;}  	
			
             System.out.println(j);

vlw

Não! Você precisa receber em p1 o conteúdo da linha do arquivo antes de entrar no for.

while((s1=in1.readLine())!=null){ p1=s1.split(&quot;/&quot;); for(int i=0;i&lt;p1.length;i++) { System.out.println(p1[i]); } } >

J

no codigo que vc mes mostrou so imprimi a 1º linha

while((s1=in1.readLine())!=null){  
               p1 = s1.split("/");  
               while(p1 != null){  
			     System.out.println(p1[j]); // imprimi so a 1º linha
			        j++;  }  
                 j++;               
              }
quil

Tenta esse outro agora:

import java.io.*;

public class Arquivo{
public static void main(String[] args) throws IOException {
 BufferedReader in1 = new BufferedReader(new FileReader("atp.txt"));
 String s1;
 String[] p1;
 int j=0;

   try {         
		    while((s1=in1.readLine())!=null){
               p1 = s1.split("/");
			   
			   //so saira do loop interno quando a linha for toda percorrida
			   while(p1.length != j){
			   System.out.println(p1[j]);
			   j++; 
 					}//Fim do for interno.
					
				System.out.println("\n");	
					j = 0;/*A cada nova linha que for percorrida aqui sera configurada com
							zero para que nao de um erro do tipo: java.lang.ArrayIndexOutOfBoundsException:*/
              
			  }             			  
       in1.close();
	   
          }catch (Exception e){System.out.println("Excecao\n" + e);
		  }
        }
      }
J

valeu consegui obrigada o codigo final ficou assim

while((s1=in1.readLine())!=null){                
              p1=s1.split("/");            
              for(int i=0;i<p1.length;i++) {    //tirei o <= e coloquei so <,por isso ele imprimia  so a primeira linha ele acessava um valor nulo                         
                 System.out.println(p1[i]);  
                                           }  
	          System.out.println("");
                          }
Criado 1 de maio de 2012
Ultima resposta 1 de mai. de 2012
Respostas 7
Participantes 3