Ajuda JAVA Urgente

Boas pessoal,

Então é assim, estou a fazer um projecto que tem que interligar Instituição, Cursos, Períodos, Disciplinas, Professores e Alunos.

E num dos Cases do Switch tenho:

				    case 1: System.out.println("Introduza o Nome do Curso: ");
						String nome_curso = Teclado.leString();
						System.out.println("Introduza o Numero de Periodos: ");
						int num_periodos = Teclado.leInteiro();
						System.out.println("Introduza a Duracao do Periodo: ");
						int duracao_periodo = Teclado.leInteiro();
						int codigo_curso = contadorCodigoCurso++;
						
						Periodo p = new Periodo(num_periodos, duracao_periodo);
						Curso c = new Curso(nome_curso, codigo_curso, num_periodos);
						inst.guardaCurso(c);
						c.guardaPeriodos(p);
						break;

E depois queria mostrar a lista de períodos. Mas quando faço:

[code]
case 5: System.out.println("Introduza o Periodo Correspondente: ");
c.listaPeriodos();
int periodoCorrespondente = Teclado.leInteiro();
System.out.println("Introduza o numero de Disciplinas do Periodo: ");
int num_disciplinas = Teclado.leInteiro();
for (int i = 0; i < num_disciplinas; i++) {
System.out.println(“Introduza a " + i + " Disciplina”);
System.out.println(“Introduza o Nome da Disciplina”);
String nome_disciplina = Teclado.leString();
System.out.println(“Introduza o Professor da Disciplina”);
inst.listaProf();
int codigo_prof = Teclado.leInteiro();
int codigo_disciplina = contadorCodigoDisciplina++;

						Disciplinas d = new Disciplinas(nome_disciplina, codigo_disciplina, prof_disciplina);
						p.guardaDisciplina(d);
						
					}[/code]

Ele diz que: “Variable c might not have been initialized”, na linha que está em Bold em cima. Alguém me pode ajudar?
Depois, quando faço:

Disciplinas d = new Disciplinas(nome_disciplina, codigo_disciplina, prof_disciplina); p.guardaDisciplina(d);

O último parâmetro é do tipo Professor, e quando eu faço isso não compila porque não são do mesmo tipo. :S

Alguém me ajuda?

Cumps

Porquê receber parâmetros direto dentro do Switch? Quais são obrigatórios(que o usuário TEM que digitar)?Deixe-os fora.Se vc for fazer isso só em um dado case: Curso c = new Curso(nome_curso, codigo_curso, num_periodos); o compilador não tem como saber se ele foi inicializado ou não para ser usado em outro(esse case podenão ocorrer).

O seu primeiro problema é com o escopo das variáveis.

Veja, você declarou dentro do primeiro case Curso c = ..... Para utilizá-lo em todos os seus case, declare a variável fora do Switch.

Declarei fora do Switch, assim como todos os atributos que entram. E agora aparece o mesmo erro que aparecia, mas para todos esses.

	String nome_curso;
	int num_periodos;
	int duracao_periodo;
	int codigo_curso;
	
	Curso c = new Curso(nome_curso, codigo_curso, duracao_periodo);
	Periodo p = new Periodo(num_periodos, duracao_periodo);

Fiz assim… E agora aparece para variable might not have been initializated, em todos os atributos. :S

[quote=Tiagans]Declarei fora do Switch, assim como todos os atributos que entram. E agora aparece o mesmo erro que aparecia, mas para todos esses.

	String nome_curso;
	int num_periodos;
	int duracao_periodo;
	int codigo_curso;
	
	Curso c = new Curso(nome_curso, codigo_curso, duracao_periodo);
	Periodo p = new Periodo(num_periodos, duracao_periodo);

Fiz assim… E agora aparece para variable might not have been initializated, em todos os atributos. :S[/quote]
Isso porque variáveis locais sempre devem ser inicializadas. Caso queira fazer alguma atribuição, faça junto da declaração inicializando a variável. Senão, apenas inicie com o valor padrão (para números é o zero). Algo como:

// inicializa com o valor padrão:
int num_periodos = 0;
// ou poderia ser algo como
int num_periodos = algumaConta(); // sendo algumaConta um método que retorna um inteiro