Ajuda com métodos

5 respostas
jkrfabio
Tenho o seguinte código, que peço a ele que leia um arquivo de texto meu
package Service;

import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

import Model.Adesao;

public class InsertService 
{
	public void InsertService() throws IOException
	{
		Scanner scanner = new Scanner(new FileReader("tabela.txt"));
	}
	
}
Aqui é a parte do código que está com erro
package View;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import Model.Adesao;
import Service.InsertService;

public class Main 
{
	public static void main(String[] args) throws IOException 
	{

		File arquivo = new File("inserts.txt");
		FileWriter fw = new FileWriter(arquivo);
		BufferedWriter bw = new BufferedWriter(fw);
		
		Adesao a = new Adesao();
		
		while(scanner.hasNext())
		{
			String [] parametros = scanner.nextLine().split("\\-");
			
			a.setIdade(parametros[0]);
			a.setCapital(parametros[1]);
			a.setProduto(parametros[2]);
			a.setMensalidade(parametros[3]);
			
			bw.write("insert into tabela values ("+a.getIdade()+",'"+a.getCapital()+"','"+a.getProduto()+"','"+a.getMensalidade()+"');\n");
			
		}
		
		bw.close();
	}
}

A ajuda é, como faço para minha classe Main reconhecer o meu método com aquela variável scanner? Pois está dando erro somente no scanner, por ele está em outro pacote.

5 Respostas

Brainiac.jar

Pelo que eu vi voce está usando sua variavel scanner no contexto de main sem criá-la. Voce a criou em outro pacote, main não a conhece.

Tente o seguinte:
1º - criar outro objeto scanner dentro de class Main.
2º - atribua a ele o conteudo de seu objeto que está em outro pacote, para fazer isso tente o seguinte, deixe a classe InsertService como estatica, então a chame diretamente, e faça-a retornar seu objeto scanner. Assim quando ela retornar voce atribui ao seu objeto dentro do contexto de main.

jkrfabio
Assim?
package Service;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

import Model.Adesao;

public class InsertService 
{
	static void lerArquivo() throws Exception
	{
		Scanner scanner = new Scanner(new FileReader("tabela.txt"));
	}
}
public class Main 
{
	public static void main(String[] args) throws IOException 
	{
		File arquivo = new File("inserts.txt");
		FileWriter fw = new FileWriter(arquivo);
		BufferedWriter bw = new BufferedWriter(fw);
		
		Adesao a = new Adesao();
		
		Scanner scanner = new Scanner(new FileReader("tabela.txt"));
		
		while(scanner.hasNext())
		{
			String [] parametros = scanner.nextLine().split("\\-");
			
			a.setIdade(parametros[0]);
			a.setCapital(parametros[1]);
			a.setProduto(parametros[2]);
			a.setMensalidade(parametros[3]);
			
			bw.write("insert into tabela values ("+a.getIdade()+",'"+a.getCapital()+"','"+a.getProduto()+"','"+a.getMensalidade()+"');\n");
		}
		
		bw.close();
	}
}
Brainiac.jar

Quase … tente o seguinte:

package Service;  
  
import java.io.FileNotFoundException;  
import java.io.FileReader;  
import java.io.IOException;  
import java.util.Scanner;  
  
import Model.Adesao;  
  
public class InsertService   
{  
    static Object lerArquivo() throws Exception  
    {  
        Scanner scanner = new Scanner(new FileReader("tabela.txt"));  
    	return scanner;
    }  
}
public class Main   
{  
	Scanner scanner;
    public static void main(String[] args) throws IOException   
    {  
        File arquivo = new File("inserts.txt");  
        FileWriter fw = new FileWriter(arquivo);  
        BufferedWriter bw = new BufferedWriter(fw);  
          
        Adesao a = new Adesao();  
          
        scanner = (Scanner) InsertService.lerArquivo();  
          
        while(scanner.hasNext())  
        {  
            String [] parametros = scanner.nextLine().split("\\-");  
              
            a.setIdade(parametros[0]);  
            a.setCapital(parametros[1]);  
            a.setProduto(parametros[2]);  
            a.setMensalidade(parametros[3]);  
              
            bw.write("insert into tabela values ("+a.getIdade()+",'"+a.getCapital()+"','"+a.getProduto()+"','"+a.getMensalidade()+"');\n");  
        }  
          
        bw.close();  
    }  
}

Se der algum problema de privilégio de acesso, experimente colocar o modificador public em frente ao método lerArquivo().

jkrfabio
Assim funcionou:
public class Main 
{
	static Scanner scanner;
	public static void main(String[] args) throws Exception 
	{
		File arquivo = new File("inserts.txt");
		FileWriter fw = new FileWriter(arquivo);
		BufferedWriter bw = new BufferedWriter(fw);
		
		Adesao a = new Adesao();
		
		scanner = (Scanner) InsertService.lerArquivo();
		
		while(scanner.hasNext())
		{
			String [] parametros = scanner.nextLine().split("\\-");
			
			a.setIdade(parametros[0]);
			a.setCapital(parametros[1]);
			a.setProduto(parametros[2]);
			a.setMensalidade(parametros[3]);
			
			bw.write("insert into tabela values ("+a.getIdade()+",'"+a.getCapital()+"','"+a.getProduto()+"','"+a.getMensalidade()+"');\n");
		}
		
		bw.close();
	}
}
public class InsertService 
{
	public static Object lerArquivo() throws Exception
	{
		Scanner scanner = new Scanner(new FileReader("tabela.txt"));
		return scanner;
	}
}

Muito obrigado pela sua ajuda! (=

Brainiac.jar

That’s OK. Bom saber que consegui ajudá-lo. Até a próxima! :wink:

Criado 28 de fevereiro de 2013
Ultima resposta 28 de fev. de 2013
Respostas 5
Participantes 2