O que há de errado?

24 respostas
mcirqueira

Olá pessoal!
Como alguns já sabem, eu estou desenvolvendo um programa de cadastramento de clientes em inglês. Já postei uma dúvida sobre isso, mas agora tenho outra dúvida:
Já tenho o código todo pronto, mas ao compilar aparece a seguinte mensagem:

Olhem o código:

import javax.swing.JOptionPane;
import java.io.FileWriter;
import java.io.PrintWriter;
  
public class Cadastro {  
    public static void main (String[]args) {  
         String nome_do_arquivo, nome, data_nascimento, numero_telefone, numero_celular, email;		 
         
         nome_do_arquivo = JOptionPane.showInputDialog("Qual será o nome deste arquivo?" + ".txt");
		 
         nome = JOptionPane.showInputDialog("Qual é o nome de seu cliente?");
                            
         data_nascimento = JOptionPane.showInputDialog("Quando é o aniversario de seu cliente?");  
        		 
		 numero_telefone = JOptionPane.showInputDialog("Qual é o número de telefone fixo dele(a)?");  
         		 
		 numero_celular = JOptionPane.showInputDialog("E o número de celular?"); 
         		
		 email = JOptionPane.showInputDialog("Ele(a) tem e-mail?");
		   
		 File file = new file ("/Clientes cadastrados/" + nome_do_arquivo);		  
		 FileWriter writer = new FileWriter(new file(nome_do_arquivo));
		 PrintWriter cadastro = new PrintWriter(writer);
		 cadastro.println("Cliente: " + nome +"\n" + "Data de aniversário: " + data_nascimento + "\n" + "Número de telefone fixo: " + numero_telefone + "\n" + "número de celular: " + numero_celular + "\n" + "E-mail :" + email + "\n");
		 cadastro.close();
		 		 
        System.exit(0);  
}  
}

Qualquer ajuda é bem-vinda. :smiley:

24 Respostas

ironmarq

boa noite colega !!!
Já tentou realizar o import da classe File, nao encontrei no fonte…
T+

Bruno_Cunha

Você precisa importar a classe java.io.File.

E o Java é uma linguagem case-sensitive, ao instanciar uma classe, digite o nome dela respeitando maiúsculas e minúsculas. Use “new File” ao invés de “new file”.

Dê uma olhada nesse artigo:
http://www.guj.com.br/articles/13

Abraço

mcirqueira

Eu tinha colocado o “new File” mas mesmo assim deu erro então eu coloquei com letra minúscula.
Obrigado a todos!

mcirqueira

Fiz como vós falaram mas aí apareceu outro erro:

Olhem novamente o código:

import javax.swing.JOptionPane;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
  
public class Cadastro {  
    public static void main (String[]args) {  
         String nome_do_arquivo, nome, data_nascimento, numero_telefone, numero_celular, email;		 
         
         nome_do_arquivo = JOptionPane.showInputDialog("Qual será o nome deste arquivo?" + ".txt");
		 
         nome = JOptionPane.showInputDialog("Qual é o nome de seu cliente?");
                            
         data_nascimento = JOptionPane.showInputDialog("Quando é o aniversario de seu cliente?");  
        		 
		 numero_telefone = JOptionPane.showInputDialog("Qual é o número de telefone fixo dele(a)?");  
         		 
		 numero_celular = JOptionPane.showInputDialog("E o número de celular?"); 
         		
		 email = JOptionPane.showInputDialog("Ele(a) tem e-mail?");
		   
		 File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);		  
		 FileWriter writer = new FileWriter(new File(nome_do_arquivo));
		 PrintWriter cadastro = new PrintWriter(writer);
		 cadastro.println("Cliente: " + nome +"\n" + "Data de aniversário: " + data_nascimento + "\n" + "Número de telefone fixo: " + numero_telefone + "\n" + "número de celular: " + numero_celular + "\n" + "E-mail :" + email + "\n");
		 cadastro.close();
		 		 
        System.exit(0);  
}  
}
romarcio

Parece faltar o try/cacth

mcirqueira

E onde eu coloco o try/catch e por que colocá-lo?

romarcio

E onde eu coloco o try/catch e por que colocá-lo?

Na linha que o erro está sendo apontado.

discorpio

Boa noite a todos.

Voce deve colocar aqui:

try {
         File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);         
         FileWriter writer = new FileWriter(new File(nome_do_arquivo));  
         PrintWriter cadastro = new PrintWriter(writer);  
         cadastro.println("Cliente: " + nome +"\n" + "Data de aniversário: " + data_nascimento + "\n" + "Número de telefone fixo: " + numero_telefone + "\n" + "número de celular: " + numero_celular + "\n" + "E-mail :" + email + "\n");  
         cadastro.close();
   } catch (IOException ex) {
         ex.printStackTrace();
   } catch (Exception ex) {
         ex.printStrackTace();
   }

A princípio arquivos do tipo “File” disparam um exceção do tipo “IOException”, porém, por vias das dúvidas e também tratei a exceçâo com “Exception”

Um abraço.

ironmarq

“mcirqueira” é o seguinte, pense em problemas que possam ocorrer após vc compilar seu programa, justamente no momento em que ele estiver rodando bonitinho e vc estiver esperando ele retornar algum valor esperado e desejado e pumbaaaa, vc recebe uma tal de java.io.IOException, isso significa que algo “excepcional” ocorreu em tempo de execução vindo de seu programa, por esse e outros motivos, java disponibiliza o mecanismo de tratamento de exceções com o intuito de “tratar” esses possíveis erros para q o seu programa continue em sua execução, mesmo após o lançamento da exceção que foi mostrado na prática pelo “discorpio”, qdo se trabalha com o pacote java.io, onde se trabalha com acesso á disco, serialização de objetos entre outros, exceções podem ser lançadas . Se tiver curiosidade, dê uma procurada no javadoc sobre o pacote java.io que aprenderá muita coisa, se tiver mais dúvidas, estou á disposição.

mathiasnw

Em java existem dois tipos de exceções as verificadas e não-verificadas.

Resumindo
Exceções verificadas o compilador obriga você a colocar o try catch.

http://www.dcc.ufrj.br/~comp2/TextosJava/Excecoes.pdf

mcirqueira

discorpio:
Boa noite a todos.

Voce deve colocar aqui:

try {
         File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);         
         FileWriter writer = new FileWriter(new File(nome_do_arquivo));  
         PrintWriter cadastro = new PrintWriter(writer);  
         cadastro.println("Cliente: " + nome +"\n" + "Data de aniversário: " + data_nascimento + "\n" + "Número de telefone fixo: " + numero_telefone + "\n" + "número de celular: " + numero_celular + "\n" + "E-mail :" + email + "\n");  
         cadastro.close();
   } catch (IOException ex) {
         ex.printStackTrace();
   } catch (Exception ex) {
         ex.printStrackTace();
   }

A princípio arquivos do tipo “File” disparam um exceção do tipo “IOException”, porém, por vias das dúvidas e também tratei a exceçâo com “Exception”

Um abraço.

Olá, desculpe por está atormentando vós desse jeito, mas é eu não entendo muito desses tratamentos de erros, mas sempre faço do jeito que vós falam e sempre dá um erro. :cry:
Vejam:

E o código:

import javax.swing.JOptionPane;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
  
public class Cadastro {  
    public static void main (String[]args) {  
         String nome_do_arquivo, nome, data_nascimento, numero_telefone, numero_celular, email;		 
         
         nome_do_arquivo = JOptionPane.showInputDialog("Qual será o nome deste arquivo?" + ".txt");
		 
         nome = JOptionPane.showInputDialog("Qual é o nome de seu cliente?");
                            
         data_nascimento = JOptionPane.showInputDialog("Quando é o aniversario de seu cliente?");  
        		 
		 numero_telefone = JOptionPane.showInputDialog("Qual é o número de telefone fixo dele(a)?");  
         		 
		 numero_celular = JOptionPane.showInputDialog("E o número de celular?"); 
         		
		 email = JOptionPane.showInputDialog("Ele(a) tem e-mail?");
		 
		 
		 try {  
         File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);           
         FileWriter writer = new FileWriter(new File(nome_do_arquivo));    
         PrintWriter cadastro = new PrintWriter(writer);    
         cadastro.println("Cliente: " + nome +"\n" + "Data de aniversário: " + data_nascimento + "\n" + "Número de telefone fixo: " + numero_telefone + "\n" + "número de celular: " + numero_celular + "\n" + "E-mail :" + email + "\n");    
         cadastro.close();  
         } catch (IOException ex) {  
         ex.printStackTrace();  
         } catch (Exception ex) {  
         ex.printStrackTace();  
         }		 
				 		 
        System.exit(0);  
}  
}
romarcio

IOException é uma classe, sendo uma classe ela precisa ser importada.

Não leva a mal, mas vou te indicar 2 livros muito bons:
Use a Cabeça Java
Java Como Programar

Vai te ajudar nos estudos e a entender muita coisa.

mcirqueira

E o segundo erro?

romarcio

mcirqueira:
E o segundo erro?

Segue o mesmo principio.

mcirqueira

Obrigado e desculpa por ser muito chato.

mcirqueira

Como assim “Segue o mesmo principio”?

romarcio
} catch (IOException ex) {    
         ex.printStackTrace();    
         } catch (Exception ex) {    
         ex.printStrackTace();    
         }

Você deve ter apenas copiado o código, então não percebeu que tem um erro nele. Se escreve: printStackTrace() e não printStrackTace()

mcirqueira

romarcio:
} catch (IOException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStrackTace(); }

Você deve ter apenas copiado o código, então não percebeu que tem um erro nele. Se escreve: printStackTrace() e não printStrackTace()

Aí aparece outro erro:

mcirqueira
} catch (IOException ex) {  
         ex.printStackTrace();  
         } catch (Exception ex) {  
         ex.printStackTrace();  
         }

Em vez de ex.printStrackTrace é ex.printStackTrace
Por isso que estava dando erro.Só não prestei muita atenção!

import javax.swing.JOptionPane;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
  
public class Cadastro {  
    public static void main (String[]args) {  
         String nome_do_arquivo, nome, endereco, cpf, rg, data_nascimento, numero_telefone, numero_celular, email;		 
                 
		 nome_do_arquivo = JOptionPane.showInputDialog("Qual será o nome deste arquivo?");
		 
         nome = JOptionPane.showInputDialog("Qual é o nome de seu cliente?");
		 
		 endereco = JOptionPane.showInputDialog("Onde seu cliente mora?");
		 
		 cpf = JOptionPane.showInputDialog("Qual é o CPF de seu cliente?");
		 
		 rg = JOptionPane.showInputDialog("Qual é o RG de seu cliente?");
                            
         data_nascimento = JOptionPane.showInputDialog("Quando é o aniversario de seu cliente?");  
        		 
		 numero_telefone = JOptionPane.showInputDialog("Qual é o número de telefone fixo dele(a)?");  
         		 
		 numero_celular = JOptionPane.showInputDialog("E o número de celular?"); 
         		
		 email = JOptionPane.showInputDialog("Ele(a) tem e-mail?");
		 
		 
		 try {  
         File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);           
         FileWriter writer = new FileWriter(new File(nome_do_arquivo + ".txt"));    
         PrintWriter cadastro = new PrintWriter(writer);    
         cadastro.println("Cliente: " + nome + "\n\n" + "Endereço: " + endereco + "\n\n" + "Data de aniversário: " + data_nascimento + "\n\n" + "Número de telefone fixo: " + numero_telefone + "\n\n" + "Número de celular: " + numero_celular + "\n\n" + "E-mail: " + email + "\n\n");    
         cadastro.close();  
         } catch (IOException ex) {  
         ex.printStackTrace();  
         } catch (Exception ex) {  
         ex.printStackTrace();  
         }		 
				 		 
        System.exit(0);  
}  
}

Agora que o programa está funcionando direitinho, quando termina de funcionar, vejo o arquivo de texto está na mesma pasta da classe Cadastro, em vez de salvar na pasta que eu criei e coloquei em:

File file = new File ("/Clientes cadastrados/" + nome_do_arquivo);
romarcio

Coloca o endereço da pasta onde deseja salvar o arquivo:

File file = new File ("C:\\Clientes cadastrados\\" + nome_do_arquivo);
mcirqueira

Mas a pasta está na mesma pasta que o arquivo Cadastro.class.

romarcio

Não entendi, você quer salvar a onde?

mcirqueira

Tem a pasta Cadastro, nesta pasta há os arquivos:

Eu quero salvar os arquivos criados pelo programa na pasta Clientes cadastrados.

Entendeu?

romarcio

Coloca todo o caminho da pasta.

Criado 9 de janeiro de 2012
Ultima resposta 10 de jan. de 2012
Respostas 24
Participantes 6