Dúvida_static

5 respostas
V

Gente tenho uma dúvida, pois estou fazendo um simples sisteminha para calcular. Mais não estou entendo o porque de o Eclipse reclamar dizendo

Eu coloquei eles como static e aí funcionou, mas não entendi o porque tem que ser static.

O código está abaixo:

package pkgOlaMundo;

import java.util.*;

public class classOlaMundo {

	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);

		System.out.print("Escolha: 1-para soma(+) / 2-para subtração(-) / 3-para multiplicação(*) / 4-para divisão(/): ");
		int operacao = input.nextInt();
		
		if( (operacao >= 1) && (operacao <= 4) )
		{
			System.out.print("Digite o primeiro numero: ");
			int numero1 = input.nextInt();
			
			System.out.print("Digite o segundo numero: ");
			int numero2 = input.nextInt();
			
			switch (operacao)
			{
				case 1:
				soma(numero1, numero2);
				break;
				
				case 2:
				subtracao(numero1, numero2);
				break;
				
				case 3:
				divisao(numero1, numero2);
				break;
				
				case 4:
				multiplicacao(numero1, numero2);
				break;
			}
		}
		else
		{
			System.out.print("Operacao inválida!");
		}
	}
	
	public static void soma( int numero1, int numero2 )
	{
		System.out.println( "O reultado é: " + (numero1 + numero2) );
	}
	
	public static void subtracao( int numero1, int numero2 )
	{
		System.out.println( "O reultado é: " + (numero1 - numero2) );
	}
	
	public static void multiplicacao( int numero1, int numero2 )
	{
		System.out.println( "O reultado é: " + (numero1 * numero2) );
	}
	
	public static void divisao( int numero1, int numero2 )
	{
		System.out.println( "O reultado é: " + (numero1 / numero2) );
	}
}

5 Respostas

M

O método main é static, logo não precisa de uma instância para funcionar. Se você chamasse os métodos soma / subtracao / multiplicacao / divisao direto da classe, de que instância ele pegaria? Não teria uma, daria problema.

Por isso toda chamada feita em um método estático deve ser para valores/métodos estáticos.

gRoOve

Para não ser necessário fazer tudo static, o que é errado, você deve criar uma classe chamada Calcular, por exemplo, e encapsular tudo lá dentro. Aí você cria um objeto dentro do método main e utiliza o objeto.

M

Para esse caso em específico acredito que faz mais sentido usar static, pois a classe tem a função de ser utilitária e não de representar um comportamento, algo similar a classe Math.

gRoOve

Tem razão, mas mesmo assim deveria criar outra classe :slight_smile:

V

Muito obrigada pelas respostas gente.
Vcs são 10000

Criado 21 de abril de 2011
Ultima resposta 21 de abr. de 2011
Respostas 5
Participantes 3