Duvida simples

Gente eu tenho uma duvida bem ridícula, bom…
Estou fazendo um programa simples em java, que serve para fazer cálculos estatísticos.
A minha duvida é o porque diabos do JAVA nao permitir que eu faça calculos com variaveis nao iniciadas??
(da para ver isso logo no inicio do algoritmo dentro da declaração das variáveis float, eu tento declarar Q com o valor de 1-p, mas nao consigo pois a variavel p nao possui valor inicializado), coisa que funciona perfeitamente em C, a duvida é essa, porque o JAVA nao permite, e como posso fazer para ele permitir.

`package Estatistica;

import java.io.PrintStream;
import java.util.Scanner;

public class Dimensionamento_da_Amostra {

public static void main(String[] args) {
	
	PrintStream so = System.out;
	Scanner entrada = new Scanner(System.in);
	
	float Z,p,q=1-p;\\ AQUI Ó
	int populaçao;
	
	so.println("Informe qual a preciçao desejada: "
			+ "\n--\t90% : 1"
			+ "\n--\t95% : 2"
			+ "\n--\t98% : 3"
			+ "\n--\t99%:  4");
	
	so.print("Opção: ");
	int x = entrada.nextInt();
	
	
			
		while(x!=0){
			
			
	        
			
			if(x==1){
				
				Z = 1.645f;
				so.print("Informe o tamanho da população: ");
				populaçao=entrada.nextInt();
				so.print("Informe o valor de p: ");
				p=entrada.nextFloat();
		        					
			}
			if(x==2){
				Z = 1.96f;
				
				so.print("Informe o tamanho da população: ");
				populaçao=entrada.nextInt();
				
						
			}
			if(x==3){
				Z = 2.33f;
				
				so.print("Informe o tamanho da população: ");
				populaçao=entrada.nextInt();
				
						
			}
			if(x==4){
				Z = 2.575f;
				
				so.print("Informe o tamanho da população: ");
				populaçao=entrada.nextInt();
			
			}
			if(x>4){
				so.println("Opção invalida");
							
			}
			x=entrada.nextInt();
    }
}

}`

Variáveis locais não são inicializadas com um valor padrão, somente variáveis de instância e variáveis de classe.
Quando uma variável local não é inicializada e você tenta ler o valor dela, ocorre erro de compilação.

Porquê quando uma variável é declara e você não atribui um valor a ela, a variável passa a armazenar “null”, ou seja, ela não armazena valor algum… Se você tentar subtrai algo por “null”, ocorre um erro…
Isso funciona com Strings também…

Isso não se aplica à variáveis locais, somente à variáveis de instância e variáveis de classe.

Além deste cenário se aplicar somente em variáveis de instância e classe, como dito pelo starosky, isso não se aplica para variáveis do tipo primitivo. O null é setado para objetos não inicializados, somente. Cada variável primitiva tem seu valor default para estado não inicializado, digamos assim, por exemplo:

float tem valor padrão 0.0f.
int tem valor padrão 0
boolean tem valor padrão false

NOSSA ashudhasudasu

Vou ter prova disso na quinta e ainda estou cometendo essas gafes, mil perdões! EU tinha esquecido…