Pq não encontra a variavel? Help

Boa tarde!

Não consigo entender pq ele nao encherga as variaveis.
Agradeço desde já qualquer atenção fornecida!

package usodeifs;

/**
 *
 * @author Guilherme
 */
import java.util.Scanner;
public class UsodeIFS {

    public static void main(String[] args) {
        String s = null;
        String n = null;

        Scanner input = new Scanner (System.in);
        
        System.out.println("Qual o seu Nome?: ");
        String nome = input.nextLine();
        
        System.out.println("Você é casado?: S ou N ");
        String estadoCivil = input.nextLine();
        
        switch (estadoCivil) {
            case "s":
                System.out.println("Qual o Nome da sua esposa?: ");
                String nomeEsposa = input.nextLine();
                break;
            case "n":
                String solteiro;
                solteiro = input.nextLine();
                break;
        }
        System.out.println("Você tem Filhos?: S ou N  ");
        String filhos = input.nextLine();
        
        switch (filhos) {
            case "s":
           System.out.println("Quantos filhos voce tem? ");
           String qtdFilhos = input.nextLine();
           System.out.println("Quantos sao homens?: ");
         String filhosHomens = input.nextLine();
          System.out.println("Quantos são mulheres?: ");
          String filhasMulheres = input.nextLine ();
           break;    
            case "n":
                String qntFilhos = ("null");
        }
         int idade;
          
     System.out.println("Qual seu ano de Nascimento?:  ");  
        int dataNasc = input.nextInt();  
        idade = (2014-dataNasc);  
        
      System.out.println("------------------------------");  
      System.out.println("RELATORIO DOS DADOS INSERIDOS ");  
      System.out.println("Nome: "+nome);  
      System.out.println("Casado?: "+estadoCivil); 
      System.out.println("Casado?: "+nomeEsposa);   
      System.out.println("A sua idade e: "+idade);
      System.out.println("Filhos Homens: "+filhosHomens); 
      System.out.println("Filhas Mulheres: "+filhasMulheres); 
      System.out.println("------------------------------");    
        }
    
    
    }

Ele não imprime: (nomeEsposa),(filhosHomens),(filhasMulheres).
Qual alternativa possivel?

Simples, as variáveis estão fora do escopo. Você declarou dentro de chaves { }, o que está fora das chaves (ou seja, seu System.out.println(string)) não enxerga o que está declarado dentro das chaves. A solução é declarar fora das chaves e apontar elas para null ou “”.

Observação: não coloque coisas como ajuda, help, etc… porque se você está aqui significa que você precisa de ajuda.

[quote=Sem_Nome]Simples, as variáveis estão fora do escopo. Você declarou dentro de chaves { }, o que está fora das chaves (ou seja, seu System.out.println(string)) não enxerga o que está declarado dentro das chaves. A solução é declarar fora das chaves e apontar elas para null ou “”.

Observação: não coloque coisas como ajuda, help, etc… porque se você está aqui significa que você precisa de ajuda.[/quote]

Obrigado pelas observações.
caro amigo, por que ele encherga as variaveis (+nome) e (+situação civil) ? elas estão fora do escopo e são puxadas!
#confuso

[quote=Lenux][quote=Sem_Nome]Simples, as variáveis estão fora do escopo. Você declarou dentro de chaves { }, o que está fora das chaves (ou seja, seu System.out.println(string)) não enxerga o que está declarado dentro das chaves. A solução é declarar fora das chaves e apontar elas para null ou “”.

Observação: não coloque coisas como ajuda, help, etc… porque se você está aqui significa que você precisa de ajuda.[/quote]

Obrigado pelas observações.
caro amigo, por que ele encherga as variaveis (+nome) e (+situação civil) ? elas estão fora do escopo e são puxadas!
#confuso

[/quote]

Estão no mesmo escopo.

[code]import java.util.Scanner;

public class A { // nivel 1

public static void main(String[] args) { // nivel 2
	String s = null;
	String n = null;

	Scanner input = new Scanner(System.in);

	System.out.println("Qual o seu Nome?: ");
	String nome = input.nextLine();

	System.out.println("Você é casado?: S ou N ");
	String estadoCivil = input.nextLine();

	switch (estadoCivil) { // nivel 3-a
	case "s":
		System.out.println("Qual o Nome da sua esposa?: ");
		String nomeEsposa = input.nextLine();
		break;
	case "n":
		String solteiro;
		solteiro = input.nextLine();
		break;
	}
	System.out.println("Você tem Filhos?: S ou N  ");
	String filhos = input.nextLine();

	switch (filhos) { // nivel 3-b
	case "s":
		System.out.println("Quantos filhos voce tem? ");
		String qtdFilhos = input.nextLine();
		System.out.println("Quantos sao homens?: ");
		String filhosHomens = input.nextLine();
		System.out.println("Quantos são mulheres?: ");
		String filhasMulheres = input.nextLine();
		break;
	case "n":
		String qntFilhos = ("null");
	}
	int idade;

	System.out.println("Qual seu ano de Nascimento?:  ");
	int dataNasc = input.nextInt();
	idade = (2014 - dataNasc);

	System.out.println("------------------------------");
	System.out.println("RELATORIO DOS DADOS INSERIDOS ");
	System.out.println("Nome: " + nome);
	System.out.println("Casado?: " + estadoCivil); //você está chamando uma variável declarada no nível 2 dentro do nível 2
	System.out.println("Casado?: " + nomeEsposa);
	System.out.println("A sua idade e: " + idade);
	System.out.println("Filhos Homens: " + filhosHomens);
	System.out.println("Filhas Mulheres: " + filhasMulheres);
	System.out.println("------------------------------");
}

}[/code]

Como você pode ver, nome e estadoCivil estão no mesmo escopo (chamei escopo de nível). O escopo 3-a enxerga tudo que está nos níveis 2 e 1 mas os níveis 2 e 1 não enxergam nada que está declarado no escopo 3-a e 3-b.

Você poderia chama-las também dentro dos níveis 3-a e 3-b sem problema algum mas se elas tivessem sido declaradas dentro dos níveis 3-a ou 3-b ai sim você não poderia chama-las.

Espero não ter sido confuso.

[quote=Sem_Nome][quote=Lenux][quote=Sem_Nome]Simples, as variáveis estão fora do escopo. Você declarou dentro de chaves { }, o que está fora das chaves (ou seja, seu System.out.println(string)) não enxerga o que está declarado dentro das chaves. A solução é declarar fora das chaves e apontar elas para null ou “”.

Observação: não coloque coisas como ajuda, help, etc… porque se você está aqui significa que você precisa de ajuda.[/quote]

Obrigado pelas observações.
caro amigo, por que ele encherga as variaveis (+nome) e (+situação civil) ? elas estão fora do escopo e são puxadas!
#confuso

[/quote]

Estão no mesmo escopo.

[code]import java.util.Scanner;

public class A { // nivel 1

public static void main(String[] args) { // nivel 2
	String s = null;
	String n = null;

	Scanner input = new Scanner(System.in);

	System.out.println("Qual o seu Nome?: ");
	String nome = input.nextLine();

	System.out.println("Você é casado?: S ou N ");
	String estadoCivil = input.nextLine();

	switch (estadoCivil) { // nivel 3-a
	case "s":
		System.out.println("Qual o Nome da sua esposa?: ");
		String nomeEsposa = input.nextLine();
		break;
	case "n":
		String solteiro;
		solteiro = input.nextLine();
		break;
	}
	System.out.println("Você tem Filhos?: S ou N  ");
	String filhos = input.nextLine();

	switch (filhos) { // nivel 3-b
	case "s":
		System.out.println("Quantos filhos voce tem? ");
		String qtdFilhos = input.nextLine();
		System.out.println("Quantos sao homens?: ");
		String filhosHomens = input.nextLine();
		System.out.println("Quantos são mulheres?: ");
		String filhasMulheres = input.nextLine();
		break;
	case "n":
		String qntFilhos = ("null");
	}
	int idade;

	System.out.println("Qual seu ano de Nascimento?:  ");
	int dataNasc = input.nextInt();
	idade = (2014 - dataNasc);

	System.out.println("------------------------------");
	System.out.println("RELATORIO DOS DADOS INSERIDOS ");
	System.out.println("Nome: " + nome);
	System.out.println("Casado?: " + estadoCivil); //você está chamando uma variável declarada no nível 2 dentro do nível 2
	System.out.println("Casado?: " + nomeEsposa);
	System.out.println("A sua idade e: " + idade);
	System.out.println("Filhos Homens: " + filhosHomens);
	System.out.println("Filhas Mulheres: " + filhasMulheres);
	System.out.println("------------------------------");
}

}[/code]

Como você pode ver, nome e estadoCivil estão no mesmo escopo (chamei escopo de nível). O escopo 3-a enxerga tudo que está nos níveis 2 e 1 mas os níveis 2 e 1 não enxergam nada que está declarado no escopo 3-a e 3-b.

Você poderia chama-las também dentro dos níveis 3-a e 3-b sem problema algum mas se elas tivessem sido declaradas dentro dos níveis 3-a ou 3-b ai sim você não poderia chama-las.

Espero não ter sido confuso.[/quote]

Agradeço pelas informações! mas continuo confuso.
não vejo uma solução para imprimir um relatorio para esse exercicio.
;S

Como eu disse anteriormente, declare as variáveis no nível 2 porque da forma que você declarou elas só existem dentro do switch.


package usodeifs;

/**
 *
 * @author Guilherme
 */
import java.util.Scanner;
public class UsodeIFS {

    public static void main(String[] args) {
        String s = null;
        String n = null;
        String nomeEsposa = null;
        int qntFilhos = 0;
        int filhosH = 0;
        int filhasM = 0;
        Scanner input = new Scanner (System.in);
        
        System.out.println("Qual o seu Nome?: ");
        String nome = input.nextLine();
        
        System.out.println("Você é casado?: S ou N ");
        String estadoCivil = input.nextLine();
        
        switch (estadoCivil) {
            case "s":
                System.out.println("Qual o Nome da sua esposa?: ");
                nomeEsposa = input.nextLine();
                break;
            case "n":
                String solteiro;
                solteiro = input.nextLine();
                break;
        }
        System.out.println("Você tem Filhos?: S ou N  ");
        String filhos = input.nextLine();
        
        switch (filhos) {
          case "s":
         System.out.println("Quantos filhos voce tem? ");
         qntFilhos = input.nextInt();
         System.out.println("Quantos sao homens?: ");
         filhosH = input.nextInt();
         System.out.println("Quantos são mulheres?: ");
         filhasM = input.nextInt ();
          break;    
            case "n":
                String qtdFilhos = ("null");
        }
         int idade;
          
     System.out.println("Qual seu ano de Nascimento?:  ");  
        int dataNasc = input.nextInt();  
        idade = (2014-dataNasc);  
        
      System.out.println("------------------------------");  
      System.out.println("RELATORIO DOS DADOS INSERIDOS ");  
      System.out.println("Nome: "+nome);  
      System.out.println("Casado?: "+estadoCivil);   
      System.out.println("A sua idade e: "+idade);
      System.out.println("Nome da esposa: "+nomeEsposa);
      System.out.println("Quantidade de filhos: "+qntFilhos);
      System.out.println("Filhos Homens: "+filhosH); 
      System.out.println("Filhas Mulheres: "+filhasM); 
      System.out.println("------------------------------");    
    }
    
    }

Deu Certo !! Obrigado d+