Não consigo fazer este problema

4 respostas
Conan

Estou com dificuldade de fazer este problema alguem poderia me ajuda:

Faça um algoritmo para calcular a conta final de um hóspede de um hotel fictício, considerando que:

a) serão lidos o nome do hóspede, o tipo do apartamento utilizado (A, B, C ou D), o número de diárias utilizadas pelo hóspede e o valor do consumo interno do hóspede;

o valor da diária é determinado pela seguinte tabela:

TIPO DO APTO. VALOR DA DIÁRIA (R$)

A 150,00

B 100,00

C 75,00

D 50,00

c) o valor total das diárias é calculado pela multiplicação do número de diárias utilizadas pelo valor da diária;

d) o subtotal é calculado pela soma do valor total das diárias e o valor do consumo interno;

e) o valor da taxa de serviço equivale a 10% do subtotal;

f) a total geral resulta da soma do subtotal com a taxa de serviço.

g) escreva a conta final contendo: o nome do hóspede, o tipo do apartamento, o número de diárias utilizadas, o valor unitário da diária, o valor total das diárias, o valor do consumo interno, o subtotal, o valor da taxa de serviço e o total geral.

Para solucionar realizei este codigo so que não quer funcionar:

import javax.swing.*;
public class exerc6 {
 public static void main (String args[]){
     
     System.out.println( " Nome do Hospede ");
     
       String Hospede= Keyboard.readString();
       
       System.out.println( " Informe o Apartamento ");
         
           String ap= Keyboard.readString();
            
        System.out.println( " Quantos dia ficou hospedado ")    ;
        
            int dia= Keyboard.readInt();
            
         if (ap = A)      {
         
      
         	int diaria = 150;  }
         	
         	
         	if (ap = B) {
         	
         		
         	int diaria=100;}
         	
         	if (ap=C)  {
         	         		
         	int diaria=75; }
         	
         	else if (ap=D) {
         	         		
         		int diaria=50; }
         	
         System.out.println(" O hspede " + Hospede + " utilizou o Apartamento " + ap + "durante " + dia + "dias com valor da diaria de " + diaria  );	
          		
         
         		
 } 	
 }

4 Respostas

Stormqueen1990

Isso está acontecendo pq a sua variável diária morre no final do bloco if ou else. Para evitar isso, vc deve declarar ela logo depois do cabeçalho do método main.

B

Vamos lá…
Em Java comparação se de instâncias ou tipos primitivos é feito com ==, o sinal = é usado para atribuição.
Quando você quer comparar valores dos objetos, e não se a instância referenciada é a mesma para ambas variáveis você deve usar o método equals. Por exemplo:

if(ap.equals("A")) {
  ...

Sempre que você declara uma variável dentro de um bloco (código entre { }) ela só é visível dentro deste bloco. É o que acontece com a diaria… Se você quer que ela esteja acessível do lado de fora você deve declará-la e apenas modificar o seu valor dentro dos blocos if, Ex:

int diaria = 0;
if(ap.equals("A")) {
  diaria = 150;
}
...

Acho que isto resolve seus problemas…

Stormqueen1990

BrunoBastos:
Vamos lá…
Em Java comparação se de instâncias ou tipos primitivos é feito com ==, o sinal = é usado para atribuição.
Quando você quer comparar valores dos objetos, e não se a instância referenciada é a mesma para ambas variáveis você deve usar o método equals. Por exemplo:

if(ap.equals("A")) {
  ...

Sempre que você declara uma variável dentro de um bloco (código entre { }) ela só é visível dentro deste bloco. É o que acontece com a diaria… Se você quer que ela esteja acessível do lado de fora você deve declará-la e apenas modificar o seu valor dentro dos blocos if, Ex:

int diaria = 0;
if(ap.equals("A")) {
  diaria = 150;
}
...

Acho que isto resolve seus problemas…

Nem tinha visto a comparação nos if’s dele.
Primeira coisa que enxerguei foi justamente a variável local.

J

velho, não sei se ta influenciando o erro mais
no nome da classe…

falta o “p” de “public”

seu codigo:

ublic class exerc6 {

Criado 20 de agosto de 2009
Ultima resposta 20 de ago. de 2009
Respostas 4
Participantes 4