Evitando erros em Java
As únicas pessoas que nunca cometem erros são as pessoas que nunca fazem nada. Mas um planejamento cuidadoso pode ajudar a evitar alguns dos goofs Java mais comuns, tais como o seguinte.
Menu
- Colocar letras maiúsculas onde eles pertencem
- Romper com uma instrução switch
- Comparando os valores com um duplo sinal de igual
- Adicionando componentes a uma gui
- Adição de ouvintes para manipular eventos
- Definindo os construtores necessários
- Corrigindo referências não-estáticos
- Ficar dentro de limites em uma matriz
- Antecipando ponteiros nulos
- Ajudando java encontrar os seus arquivos
Colocar letras maiúsculas onde eles pertencem
Java é uma linguagem case-sensitive, então você realmente tem que cuidar da sua Pareia Qs - juntamente com todas as outras letras do alfabeto. Aqui estão algumas coisas para manter em mente ao criar programas Java:
- palavras-chave do Java são todos completamente minúsculas. Por exemplo, em um Java if, a palavra E se não pode ser E se ou E SE.
- Quando você usa nomes da API Java (Application Programming Interface), o caso dos nomes tem de corresponder ao que aparece no API.
- Você também precisa se certificar de que os nomes que compõem a si mesmo são capitalizados da mesma forma ao longo de todo o seu programa. Se você declarar uma variável MyAccount, você não pode se referir a ele como MyAccount, myaccount ou MyAccount. Se você capitalizar o nome da variável de duas maneiras diferentes, Java pensa que você está se referindo a duas variáveis completamente diferentes.
Romper com uma instrução switch
Se você não sair de uma instrução switch, você começa cair por ele. Por exemplo, se o valor do verso é 3, o código a seguir imprime todas as três linhas - Última refrão: Ele é uma dor, e não tem cérebro.
switch (verso) {
case 3:
out.print ( "Last refrão") -
out.println ( "último refrão") -
case 2:
out.print ( "Ele é uma dor",) -
out.println ( "ele é uma dor",) -
caso 1:
out.print ( "não tem cérebro") -
out.println ( "não tem cérebro") -
}
Comparando os valores com um duplo sinal de igual
Quando você compara dois valores com o outro, você usa um sinal de igual duplo. A linha
if (entraNumero == randomNumber)
está correta, mas a linha
if (entraNumero = randomNumber)
não é correto.
Adicionando componentes a uma GUI
Aqui está um construtor para um quadro de Java:
SimpleFrame pública () {
botão JButton = new JButton ("Obrigado...") -
setTitle ("... Katie Feltman e Heidi Unger") -
setLayout (new FlowLayout ()) -
adicionar (botão) -
button.addActionListener (this) -
setSize (300, 100) -
setVisible (true) -
}
Faça o que fizer, não se esqueça a chamada para o método add. Sem esta chamada, você vai para todo o trabalho de criação de um botão, mas o botão não aparece em seu quadro.
Adição de ouvintes para manipular eventos
Olhe novamente para o código da seção anterior para construir um SimpleFrame. Se você esquecer a chamada para addActionListener, nada acontece quando você clica no botão. Ao clicar no botão mais uma segunda vez não ajuda.
Definindo os construtores necessários
Quando você define um construtor com parâmetros, como em
Temperatura pública (número duplo)
em seguida, o computador já não cria um construtor sem parâmetros padrão para você. Em outras palavras, você não pode mais chamar
Temperatura roomTemp = new temperatura ();
a menos que você defina explicitamente o seu próprio construtor sem parâmetros de temperatura.
Corrigindo referências não-estáticos
Se você tentar compilar o código a seguir, você recebe uma mensagem de erro:
classe WillNotWork {
saudação String = "Olá" -
void main (args String []) public static {
System.out.println (saudação) -
}
}
Você recebe uma mensagem de erro porque principal é estática, mas saudação não é estática.
Ficar dentro de limites em uma matriz
Quando você declarar uma matriz com dez componentes, os componentes têm índices de 0 a 9. Em outras palavras, se você declarar
convidados int [] = new int [10];
então você pode se referir a componentes da matriz convidados escrevendo os hóspedes [0], os hóspedes [1], e assim por diante, todo o caminho até os hóspedes [9]. Você não pode escrever os hóspedes [10], porque a matriz convidados não tem nenhum componente com o índice 10.
Antecipando ponteiros nulos
Na vida real de programação Java, você vê essa exceção o tempo todo. A NullPointerException ocorre quando você chamar um método que é suposto para retornar um objeto, mas em vez disso o método retorna nada. Aqui está um exemplo barato:
java.lang.System.out- estática de importação
importação java.io.File-
ListMyFiles classe {
void main (args String []) public static {
Arquivo myFile = new File ("janelas") -
Cordas dir [] = myFile.list () -
para (String fileName: dir) {
out.println (fileName) -
}
}
}
Este programa exibe uma lista de todos os arquivos no diretório do Windows.
Mas o que acontece se você mudar janelas para algo mais - algo que não representa o nome de um diretório?
Arquivo myFile = new File ("# *% $ !!");
Em seguida, a nova chamada de arquivos retorna nulo (uma palavra significado especial Java nada), De modo que o myFile variável tem nada nele. Mais tarde no código, o dir variável refere-se a nada, ea tentativa de percorrer todos os valores dir falha miseravelmente. Você ganha um grande NullPointerException, eo programa desaba ao seu redor.
Para evitar este tipo de calamidade, verifique a documentação da API do Java. Se você está chamando um método que pode retornar nulo, adicionar o código de exceção de manuseio para o seu programa.
Ajudando Java encontrar os seus arquivos
Você está compilar o código Java, cuidando da sua vida, quando o computador dá-lhe uma NoClassDefFoundError. Todos os tipos de coisas podem estar acontecendo de errado, mas as chances são de que o computador não consegue encontrar um arquivo Java particular. Para corrigir isso, você deve alinhar todos os planetas corretamente.
- O diretório do projeto tem de conter todos os arquivos Java cujos nomes são usados em seu código.
- Se você usar pacotes nomeados, o diretório do projeto tem que ter subdiretórios apropriadamente nomeado.
- Seu CLASSPATH deve ser definido corretamente.