Java estrutura de repetiçao

5 respostas
J

Preciso de ajuda no seguinte problema : Elabore um programa que leia uma sequência de nomes e de idades, e apresente todos os nomes e a percentagem de pessoas com idade maior ou igual a 20. A leitura termina quando for introduzido o nome “fim”.

import java.util.Scanner;
class duvida { 
    
    public static void main(String[] args) {
        int c=0,ct=0;
        do{
        Scanner sc = new Scanner(System.in);
        System.out.println("Digite o nome");
        String nome= sc.nextLine();
        
        System.out.println("Digite a idade");
        int idade= sc.nextInt();
        ct++;
        if (idade>20);{c++;}
        while(nome!=fim);

double perc= c/ct*100;

Mas quando digito nome!=fim da-me erro como resolvo? como faço para ele parar o ciclo quando eu digitar a palavra fim?

5 Respostas

peczenyj

primeiro, fim é o que ?

segundo, strings vc não deve comparar com != ou == pois isso compara se são referencias para o mesmo objeto ( e strings vc tem outros comportamentos q podem dar a impressão que isso funciona… ) use o metodo equals

do {
   ...
} while ( ! nome.equals( "fim" ) );

porem vc quer parar de ler, por tanto o que vc pode fazer é

while( true ) {
 // le nome
 if ( nome.equals("fim") ) break; // sai do loop
 // le idade
}
J

fim é uma palavra que quando digitada ira terminar a leitura ou seja não serão pedidos mais nomes será feita a percentagem de pessoas com idades superior a 20 anos.

peczenyj

mas no seu caso eu nao vi fim declarado…

lucas.sampaio

Declare ‘fim’ como String (String fim = "fim";). Da forma que está fazendo, está errado. E como o rapaz citou, comparação de strings se usa o método equals.

raphaeloneves

fim não está declarado, João. Desta forma que vc comparou, fim é uma variável que está fora do escopo/não existe. Por este motivo apresenta erro. A comparação correta para finalizar o while seria:

while(!nome.equals("fim"));

Quando utilizado os comparadores ==, != em Strings, está se comparando as referências da mesma e não o conteúdo. por exemplo:

String a = "teste";
String b = new String("teste");

a == b // false
a != b //true
a.equals(b) // true
Criado 26 de outubro de 2016
Ultima resposta 27 de out. de 2016
Respostas 5
Participantes 4