pessoal, to no netbeans e montei esse metodo, mas ele fica dando erro
o erro é: “missing return statement”
que caca que eu fiz???
Valeu a ajuda, pessoal!!!
Grande abraço a todos!!
Horácio
pessoal, to no netbeans e montei esse metodo, mas ele fica dando erro
o erro é: “missing return statement”
que caca que eu fiz???
Valeu a ajuda, pessoal!!!
Grande abraço a todos!!
Horácio
Seu método pede que você retorne um int,
mas você não esta retornando nada…
se você não quiser retornar nada é só troca o int
por void assim
public void Inf()…
ou retorna um int no seu método
Boa noite, a excessão está ocorrendo pois este método deve ter um retorno do tipo int, para isto basta colocar
return <O que é para retornar>;
ou na declaração do método tire o int, e coloque void, fazendo com que a função não tenha retorno.
public Inf() {
if (dia < 10) {
//
System.out.println("ja passamos o dia 10");
} else {
System.out.println("estamos antes do dia 10");
}
}
eu deixei como publica mesmo…e funcionou…mas tá certo, ou é melhor lançar um void???o que vocês acham?
[quote=horacio] [code]
public Inf() {
if (dia < 10) {
//
System.out.println(“ja passamos o dia 10”);
} else {
System.out.println(“estamos antes do dia 10”);
}
}
[/code]
eu deixei como publica mesmo…e funcionou…mas tá certo, ou é melhor lançar um void???o que vocês acham?[/quote]
Todo método deve ter um retorno, mesmo que ele seja do tipo void.
O único método que não tem retorno de nenhum tipo é o construtor da classe.
Se sua classe se chama Inf, então vai funcionar, pq o compilador vai interpretar o método como sendo o construtor da classe, mas se sua classe não se chama Inf, então não será possível a compilação da classe.
tá…tanto a classe quanto o construtor chamam Inf…esse contrutor tem um retorno do tipo public…para testar tirei o public e rodou…mas tá certo então, não é? (o funcionamento em si, prova isso, mas já vi muitacoisa funcionar bem inicialmente e depois pifar…rsrs)
pessoal, outra coisa, abusando um pouco da boa vontade…
voltando ao metodo
public Inf() {
if (dia < 10) {
//
System.out.println("ja passamos o dia 10");
} else {
System.out.println("estamos antes do dia 10");
}
}
o if/else não tá funcionando direito… sempre mostra “ja passamos o dia 10” o que tá errado???
Veja bem, usar ou não public, não tem nada haver com tipo de retorno.
public ou sem public(conhecido como default) são modificadores de acesso.
Posta toda a sua classe para ver o que vc está fazendo.
Como eu já disse, sem um tipo de retorno(void, int, String, char entre outros) e o mesmo nome da classe é construtor.
[quote]tanto a classe quanto o construtor chamam Inf…esse contrutor tem um retorno do tipo public[/quote] public como eu já disse não é retorno e modificador de acesso.
segue a classe conforme pedido!!
[code]/*
public class Inf {
public int dia;
public Inf() {
if (dia > 10) {
//
{System.out.println("ja passamos o dia 10");}
} else {
{System.out.println("estamos antes do dia 10");}
}
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
}
[/code]

[quote=horacio]tá…tanto a classe quanto o construtor chamam Inf…esse contrutor tem um retorno do tipo public…para testar tirei o public e rodou…mas tá certo então, não é? (o funcionamento em si, prova isso, mas já vi muitacoisa funcionar bem inicialmente e depois pifar…rsrs)
pessoal, outra coisa, abusando um pouco da boa vontade…
voltando ao metodo
public Inf() {
if (dia < 10) {
//
System.out.println("ja passamos o dia 10");
} else {
System.out.println("estamos antes do dia 10");
}
}
o if/else não tá funcionando direito… sempre mostra “ja passamos o dia 10” o que tá errado???[/quote]
O acesso do método é [color=blue]public[/color] (como todo construtor deve ser) , o nome do método construtor sempre é igual o nome da classe lembre de como se instância a classe:
Inf instancia = new Inf();
Inf() é o método construtor;
quando não se coloca nenhum tipo de acesso a esquerda do método ele toma como padrão o acesso [color=blue]protected[/color], que significa que só é acessível dentro do mesmo pacote.
e a forma correta do if/else é:
public Inf() {
if (dia > 10)
System.out.println("ja passamos o dia 10");
else if (dia < 10)
System.out.println("estamos antes do dia 10");
else
System.out.println("estamos no dia 10");
}
lembre-se que o [color=blue]else[/color] significa [color=red]senão[/color] então se o dia não é maior que 10 ou ele é menor que 10 ou igual a 10!
Quando não se especifica um modificador de acesso, é usado o modifcador default, que indica visibilidade apenas dentro do pacote, como você disse. Porém o modificador protected, além de dar visibilidade dentro do pacote, dá visibilidade para as classes filhas, mesmo que estejam em outros pacotes.
horacio,
O construtor é executado quando usamos new para instanciar um objeto.
Inf objeto = new Inf(); // Sempre que um objeto Inf for instanciado, o construtor será executado.Basicamente, ele serve para construir o objeto, portanto é interessante inicializar as variáveis de instância, mas não realizar uma tarefa, como verificar se a data é menor que tal dia e exibir ao usuário. Para esta executar tarefas, existem os métodos.
Quando não se especifica um modificador de acesso, é usado o modifcador default, que indica visibilidade apenas dentro do pacote, como você disse. Porém o modificador protected, além de dar visibilidade dentro do pacote, dá visibilidade para as classes filhas, mesmo que estejam em outros pacotes.[/quote]
Obrigado pelo esclarecimento Eric e se ele utiliza o modificador default, não existe palavra reservada para esse modificador de acesso?
Não tem uma palavra reservada para ele. Ficou estranho por eu ter dito “usar o modificador default”. Na verdade, o acesso default é apenas a ausência de um modificador: http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
O que ocorre é que por “default” (padrão) os métodos, atributos, etc, possuem visibilidade apenas dentro do pacote onde está a classe. Se quiser mudar este comportamento, pode usar um modificador de acesso (public, protected ou private). No caso da classe (com exceção das classes internas), só é permitido o acesso default ou o uso do modificador public.
em primeiro lugar, obrigado pelas resposta, pessoal!!!
seguinte, eu não entendi uma coisa:
qual a diferença de um construtor para um metódo???
por exemplo
public teste(){
operações lógicas e afins
}
isso é um construtor…e um metodo???desculpem a tremenda ignorância do que vou perguntar, mas os dois não são a mesma coisa?
Oi horacio,
Da uma olhada aqui:http://www.tiexpert.net/programacao/java/metodo-construtor.php
http://www.tiexpert.net/programacao/java/classes-abstratas.php
[quote]qual a diferença de um construtor para um metódo???
por exemplo
public teste(){
operações lógicas e afins
}
isso é um construtor…e um metodo???desculpem a tremenda ignorância do que vou perguntar, mas os dois não são a mesma coisa?[/quote]
Bom, o método construtor serve para você ter acesso a variáveis de instância e a métodos através de uma instância da classe. Dentro da própria classe você tem acesso a todas as variáveis e a todos os métodos e por tanto, não precisa usar o construtor para isso. Porém, se dentro da classe você tentar usar algum método ou variável de instância a partir de um método statico, então você vai precisar de uma instância da classe, e esse acesso acontece graças ao construtor.
Por isso não se usa lógica em construtores, e sim em métodos.
[code]
public class OlaMundo {
//variavel de instancia
private int dia;
//construtor padrão
public OlaMundo() {
}
//construtor sobrecarregado
public OlaMundo(int dia) {
this.dia = dia;
}
//método
public void testaDia(int dia) {
if (dia > 10) {
System.out.println("ja passamos o dia " + dia);
} else if (dia < 10)
System.out.println("estamos antes do dia " + dia);
else {
System.out.println("estamos no dia " + dia);
}
}
//método statico
public static void main(String[] args) {
//dentro de um método estático, precisamos de uma instancia da classe
//para ter acesso a seus membros e atributos que não são estaticos
//Criando a instancia pelo construtor padrão
OlaMundo o1 = new OlaMundo();
o1.testaDia(10);
//como dia não foi inicializada, vai exibir seu valor padrão que para int é zero
System.out.println("Hoje é dia " + o1.dia);
//Criando a instancia pelo construtor sobrecarregado
//passa para a variavel dia um valor direto pelo construtor.
OlaMundo o2 = new OlaMundo(20);
System.out.println("Hoje é dia " + o2.dia);
}
}[/code]
Seria interessante você procurar um bom livro sobre java para ler e tentar entender os conceitos do java.
Use a cabeça Java ou Java como programar, são 2 bons livros.
Um construtor é um método especial que constrói um objeto da classe e só pode ser chamado usando do operador [color=blue]new[/color], toda classe criada é um tipo para objeto e possui um método construtor, quando o método construtor não é escrito o compilador toma como padrão um método construtor vazio.
A sintaxe de um método construtor é de ter o mesmo nome da classe e não possui retorno, cada classe só possui um método construtor, valendo o uso de sobrecarga de método.
Um método é uma “ação” que pode ser executada por uma classe, você pode ter diversos métodos em uma classe com vários tipos de acesso e retorno, por exemplo:
Você tem uma classe chamada “Operacoes” que pode possui métodos soma, subtrai, divide, multiplica, etc…; mas que possui um único método construtor de nome Operacoes sem retorno que só pode ser chamado quando utiliza o operador [color=blue]new[/color] que reserva espaço de memória e retorna um endereço para o objeto do tipo Operacoes.
Recomendo a apostila da Caelum fj 11… leia com atenção e paciência.
AÊ… Post sensato, era o que era pra ter sido feito desde o início…
Dá pra perceber que nosso amigo tá MUITO zerado, mas que ele é um cara esforçado… Pow, dá um material pra ele ler e depois só vem com as dúvidas, agora fica cada um querendo explicar pra ele a sua maneira o que é um construtor, tipo de retorno, modificador de acesso… Aí é cruel, além de não aprender nada, o fórum tbm nem é pra isso…
Dá próxima vez que virem alguém com essas dúvidas, favor indicar logo a apostila ou um bom livro, porque essas dúvidas são um sinal de que nem o básico ele leu ainda…
Abs []