Minha noção de java é minima e estou tendo grandes dificuldades
para fazer os códigos que encontro na net rodarem ,pois todas as
vezes que encontro os códigos sem a classe main, não consigo cria-la
com os metódos necessários para que os códigos executem ,já fiz algumas vezes o
programa rodar, mas não aparece nada.
Quem puder mim ajudar eu agradeço, segue abaixo um código que achei na net e
que não estou conseguindo rodar.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import javax.swing.table.DefaultTableModel;
public class Agenda {
public void run() {}
private static final String DADOS = null;
private static final Agenda NovoMetodos = null;
protected static String carregaDados() {
String texto = "";
StringBuffer temp = new StringBuffer();
File arq = new File(DADOS);
try {
if (arq.exists()) {//Verifico se o arquivo existe.
// lendo arquivo
FileReader arquivo = new FileReader(arq);
BufferedReader ler = new BufferedReader(arquivo);
// Colocando num StringBuffer que é muito mais rápido e ocupa
// menos memória que +=
boolean fim = false;
//Lembrando que o método readLine() retorna null quando chega ao fim do arquivo...
while (!fim) {
String linha = ler.readLine();
if (linha == null)
fim = true;
else
temp.append(linha);
System.out.println("Leu:");
}
texto = temp.toString(); //convertendo o StringBuffer para String
// Fechando
ler.close();
arquivo.close();
} else
arq.createNewFile();// Criando Arquivo
} catch (IOException erro) {
System.out.print("Erro 01 :" + erro.toString());
} catch (SecurityException erro2) {
System.out.print("Erro 02 :" + erro2.toString());
}
return texto;
}
protected static String[][] pegaDados() {
// Carregando Dados
String nome = carregaDados();// Pegando retorno de carregaDados();
if (nome.equals("")) {//Se não encontrou nada...
nome = "Agenda Simples;Marcus Becker";
}//Se encontrou algo...
// Formatando os Dados
//Lembrando que o nome e o telefone são separados pelo
//caractere ?;? (ponto-e-vírgula)
String[] arrNome = nome.split(";");
//Como para o arrNome eu coloquei o nome e o telefone, o array de
//dados vai ter apenas metade (só o nome) contendo 2
//dimensões (nome e telefone)m então divido o tamanho dele por 2.
String[][] dados = new String[(arrNome.length / 2)][2];
for (int i = 0, j = 0; i < (arrNome.length - 1); i += 2, j++) {
dados[j][0] = arrNome[i];
dados[j][1] = arrNome[i + 1];
}
//Aqui eu adiciono ao array dados os nomes e telefones, como sei que
//sempre vem primeiro o nome e depois o telefone
//referente a esse nome, adiciono os elementos 0 e 1 do arrNome, depois
//2 e 3, depois 4 e 5, assim por diante sempre
//incrementando o i em 2 (por que se não seria 0 e 1, 1 e 2 ...), já o j
//serve para indicar o locar no array dados onde
//ficarão os dados... Nem eu mesmo entendi de primeira essa parte do código.
return dados; //Retorno os dados para a tabela (veja mais a frente).
}
//Recebe os dados já formatados, separado pelo ?;?... nome;telefone;nome;telefone...
protected static void salvarDados(String texto) {
File arq = new File(DADOS);
try {
if (arq.exists()) {//Se o arquivo existir ele salva, se não, eu não sei....
FileWriter arquivo = new FileWriter(arq);
BufferedWriter grava = new BufferedWriter(arquivo);
grava.write(texto);
grava.close();
arquivo.close();
}
} catch (IOException e) {
System.out.print("Erro 01 :" + e.toString());
} catch (SecurityException erro2) {
System.out.print("Erro 02 :" + erro2.toString());
}
}
protected static void salvaTabela(DefaultTableModel modelo) { //Recebendo o objeto
String dados = "";
StringBuffer temp = new StringBuffer(); //Buffer é mais rápido...
for (int i = 0; i < modelo.getRowCount(); i++) {
String nome = (String) modelo.getValueAt(i, 0);
String tel = (String) modelo.getValueAt(i, 1);
if (!nome.equals("")) {//Se o campo nome não estiver vazio...
//Se o campo telefone for menor que 7 ele não contem um
//numero telefônico válido...
//então substituo ele pelo hífen.
if (tel.trim().length() < 7)
tel = "-";
else {
tel = tel.trim();//tirando espaços em branco...
//o ; é usado para separar os dado, para evitar erros
//inesperados eu substitui sem dó, ele por nada.
tel = tel.replaceAll(";", "");
}
nome = nome.trim();
nome = nome.replaceAll(";", "");
//Aqui um exemplo de um método lento, nunca usem.
// dados += nome + " ; " + tel + " ; ";
temp.append(nome + ";" + tel + ";"); // forma correta!
System.out.println("Nome: " + nome + "\t Tel: " + tel);
}
}
dados = temp.toString();
salvarDados(dados); //Chamando o método salva dados.
}
protected static void ordenaTabela(DefaultTableModel modelo) {
StringBuffer temp = new StringBuffer();
String dados[] = new String[modelo.getRowCount()];
for (int i = 0; i < modelo.getRowCount(); i++) {
String valorNome = (String) modelo.getValueAt(i, 0);
String valorTel = (String) modelo.getValueAt(i, 1);
// Tirando Valores em Branco...
if (valorNome.trim().length() <= 0)
valorNome = "";
if (valorTel.trim().length() <= 0)
valorTel = "";
dados[i] = valorNome + " ;" + valorTel + ";";
}
Arrays.sort(dados);
// redefineTabela(modelo,dados);
for (int i = 0; i < dados.length; i++) {
temp.append(dados[i]);
System.out.println("Temp: " + dados[i]);
}
String nome = temp.toString();
salvarDados(nome);
}
final String[] COLUNAS = new String[]{"Nome","Telefone"};
DefaultTableModel modelo = new DefaultTableModel(NovoMetodos.pegaDados(),COLUNAS);
}