Galera e o seguinte eu tenho que resolver o exercicio onde eu digito um numero(para saber o tanto de vezes que eu vou rodar no laco) e a cada vez que eu rodo no laço tenho que digitar um numero(quantas cobaias) e um letra(tipo de cobaia), so que eu nao to consseguindo fazer a comparaçao com a letra que um variavel de tipo char
importjava.util.Scanner;importjava.util.Locale;publicclassMain{publicstaticvoidmain(String[]args){ScannerentradaTeclado=newScanner(System.in);intnumTeste=entradaTeclado.nextInt();intnumCobaia;intcontRato=0;intcontSapo=0;intcontCoelho=0;inttotalCobaia=0;doubleporcentagemRato;doubleporcentagemSapo;doubleporcentagemCoelho;chartipoCobaia;for(intcont=0;cont<numTeste;cont++){numCobaia=entradaTeclado.nextInt();tipoCobaia=entradaTeclado.next().charAt(0);if(tipoCobaia=="R"){contRato+=numCobaia;}elseif(tipoCobaia=="S"){contSapo+=numCobaia;}elseif(tipoCobaia=="C"){contCoelho+=numCobaia;}totalCobaia+=numCobaia;}porcentagemCoelho=(contCoelho*100)/totalCobaia;porcentagemRato=(contRato*100)/totalCobaia;porcentagemSapo=(contSapo*100)/totalCobaia;System.out.printf("Total: %d cobaias\n",numCobaia);System.out.printf("Total de coelhos: %d\n",contCoelho);System.out.printf("Total de ratos: %d\n",contRato);System.out.printf("Total de sapos: %d\n",contSapo);System.out.printf(Locale.US,"Percentual de coelhos: %.2f",porcentagemCoelho);System.out.printf(Locale.US,"Percentual de ratos: %.2f",porcentagemRato);System.out.printf(Locale.US,"Percentual de sapos: %.2f",porcentagemSapo);}}
como faço para comparar um char com letra??(o problema esta nas comparaçoes dentro do meu laço).
Galera e o seguinte eu tenho que resolver o exercicio onde eu digito um numero(para saber o tanto de vezes que eu vou rodar no laco) e a cada vez que eu rodo no laço tenho que digitar um numero(quantas cobaias) e um letra(tipo de cobaia), so que eu nao to consseguindo fazer a comparaçao com a letra que um variavel de tipo char
importjava.util.Scanner;importjava.util.Locale;publicclassMain{publicstaticvoidmain(String[]args){ScannerentradaTeclado=newScanner(System.in);intnumTeste=entradaTeclado.nextInt();intnumCobaia;intcontRato=0;intcontSapo=0;intcontCoelho=0;inttotalCobaia=0;doubleporcentagemRato;doubleporcentagemSapo;doubleporcentagemCoelho;chartipoCobaia;for(intcont=0;cont<numTeste;cont++){numCobaia=entradaTeclado.nextInt();tipoCobaia=entradaTeclado.next().charAt(0);if(tipoCobaia=="R"){contRato+=numCobaia;}elseif(tipoCobaia=="S"){contSapo+=numCobaia;}elseif(tipoCobaia=="C"){contCoelho+=numCobaia;}totalCobaia+=numCobaia;}porcentagemCoelho=(contCoelho*100)/totalCobaia;porcentagemRato=(contRato*100)/totalCobaia;porcentagemSapo=(contSapo*100)/totalCobaia;System.out.printf("Total: %d cobaias\n",numCobaia);System.out.printf("Total de coelhos: %d\n",contCoelho);System.out.printf("Total de ratos: %d\n",contRato);System.out.printf("Total de sapos: %d\n",contSapo);System.out.printf(Locale.US,"Percentual de coelhos: %.2f",porcentagemCoelho);System.out.printf(Locale.US,"Percentual de ratos: %.2f",porcentagemRato);System.out.printf(Locale.US,"Percentual de sapos: %.2f",porcentagemSapo);}}
como faço para comparar um char com letra??(o problema esta nas comparaçoes dentro do meu laço).
ja testou usando letras minusculas, ou apertando o capslock ?
drsmachado
Nunca, jamais, em hipótese alguma compare objetos assim
if(tipoCobaia=="R"){
Objetos são “filhos” da classe java.lang.Object e, assim sendo, devem ser comparados através do método equals que é herdado da superclasse.
A comparação com o duplo igual é feita somente para tipos primitivos. Fica como exercício verificar quais são os tipos primitivos de java.
Outra coisa
ivanGuima:
consseguindo
não existe. Não assassine o português. O correto é conseguindo.
douglaskd
drs ele esta usando char… não é String não…
mauricioadl
Ta usando String sim, para ser char tem que usar aspas ‘simples’, dae o == vai funcionar
xD
if(drsmachado==professorPasquale){
kkkkk
}
douglaskd
Ta usando String sim, para ser char tem que usar aspas ‘simples’, dae o == vai funcionar
importjava.util.Scanner;importjava.util.Locale;publicclassMain{publicstaticvoidmain(String[]args){ScannerentradaTeclado=newScanner(System.in);intnumTeste=entradaTeclado.nextInt();intnumCobaia;intcontRato=0;intcontSapo=0;intcontCoelho=0;inttotalCobaia=0;doubleporcentagemRato;doubleporcentagemSapo;doubleporcentagemCoelho;chartipoCobaia;charteste='\u0025';for(intcont=0;cont<numTeste;cont++){numCobaia=entradaTeclado.nextInt();tipoCobaia=entradaTeclado.next().charAt(0);switch(tipoCobaia){case'R':contRato+=numCobaia;break;case'S':contSapo+=numCobaia;break;case'C':contCoelho+=numCobaia;break;}totalCobaia+=numCobaia;}porcentagemCoelho=(contCoelho*100)/totalCobaia;porcentagemRato=(contRato*100)/totalCobaia;porcentagemSapo=(contSapo*100)/totalCobaia;System.out.printf("Total: %d cobaias\n",totalCobaia);System.out.printf("Total de coelhos: %d\n",contCoelho);System.out.printf("Total de ratos: %d\n",contRato);System.out.printf("Total de sapos: %d\n",contSapo);System.out.printf(Locale.US,"Percentual de coelhos: %.2f %c\n",porcentagemCoelho,teste);System.out.printf(Locale.US,"Percentual de ratos: %.2f %c\n",porcentagemRato,teste);System.out.printf(Locale.US,"Percentual de sapos: %.2f %c\n",porcentagemSapo,teste);}}
so que agora estou com outro problema, quando vo imprimi o resultado em percentual
se eu entrar com esses dados:
10
10 C
6 R
15 S
5 C
14 R
9 C
6 R
8 S
5 C
14 R
O resultado era pra sair assim:
Total: 92 cobaias
Total de coelhos: 29
Total de ratos: 40
Total de sapos: 23
Percentual de coelhos: 31.52 %
Percentual de ratos: 43.48 %
Percentual de sapos: 25.00 %
so que depois da virgula ta sainda tudo com 0.
Pq ta acontecendo isso?
E
entanglement
(contCoelho*100)/totalCobai
A divisão de dois números inteiros é um número inteiro.
Para corrigir o seu programa, não use 100 e sim 100.0 (que é um double). Ou seja,
E se o usuário não estiver com o caps lock ativado e não usar a tecla shift para digitar a entrada? Você não entrará em nenhum dos cases.
Sugiro colocar: