[list]import java.lang.String;
public class MostraIdade{
int idade = 0;
public int calculaIdade(int idade){
int resultado = 2007 - idade;
return resultado;
System.out.println("Sua idade é: " + idade);
}
public static void main(String[] args){
//Teste teste = new Teste();
calculaIdade(args[0]);
}
A vários erros fiz umas mudanças para funcionar e comentei umas linhas. Há várias outras maneiras e mais elegantes de se fazer um programa como esse mas esse tá bom pra você ver o que tava dando de errado ok?
public class MostraIdade{
//private int idade = 0; Vc coloca como atributo desta classe porém não usa em nenhum momento…
public MostraIdade() {
}
public int calculaIdade(String idade){
int resultado = 2007 - Integer.valueOf(idade);
return resultado; //System.out.println("Sua idade é: " + idade); erro você tá mandando imprimir depois de retorna o valor. Ele nunca irá imprimir. tente colocar antes do return e vê o que acontece…
}
public static void main(String[] args){
//Instancia a classe
MostraIdade application = new MostraIdade();
int idade = application.calculaIdade(args[0]);
System.out.println("Idade: " + idade);
//calculaIdade(args[0]); O Erro aqui é que você passa uma String, porém o parametro que está definido no método que você fez é um inteiro…você deve transforma a String para um inteiro.
}
[quote=davidhc][quote]
import java.lang.String;
public class MostraIdade{
int idade = 0;
public static int calculaIdade(int idade){
int resultado = 2007 - idade;
System.out.println("Sua idade é: " + idade);
return resultado;
}
public static void main(String[] args){
//Teste teste = new Teste();
System.out.println(calculaIdade(numeroQualquer));
}
}
[/quote]
Resolvido.
Quando vc vai usar um método dentro de outro método, o método precisa ser do tipo static.
[]'s[/quote]
Errado.
A palavra reservada “static” é utilizada para definir um atributo ou um método como pertencente a classe e não a um objeto daquela classe, logo não sendo necessário uma instância da classe para se executar o método ou acessar o atributo.
Você pode usar chamar métodos de dentro de métodos sem utilizar static, no caso da duvida do amigo, havia duas interpretações:
1 - Ele esqueceu de instânciar a classe “MostraIdade”, pois como estava dentro do método main e o main tava dentro da classe, ele achou que podia chamar o método direto.
2 - Ele realmente queria se utilizar da palavra reservada “static”, mas não sabia como.
Além de outros erros que tinham no programa que já foram comentados.
Dentro de métodos static, vc só pode acessar métodos ou atributos do tipo static e do jeito que ele estava tentando acessar, o método mostraIdade() tinha que ser static.
Ele poderia tb instanciar a classe dele e chamar do jeito:
Classe classe = new classe();
System.out.println(classe.mostraIdade());