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.
[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
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("------------------------------");
}
}