Duvida simples

galera bom dia,
desenvolvi um codigo que de acordo com o numero de produto que o usuario insere, ele multiplica o valor do mesmo pela quantidade que o usuario insere e atribui o resultado a double total. mas pareçe que total nao esta recebendo o valor. alguem sabe o que eu fi de errado?

import java.util.Scanner;

public class Loja {
  
   Scanner in = new Scanner( System.in );

   double _1 = 2.98;
   double _2 = 4.50;
   double _3 = 9.98;
   double _4 = 4.49;
   double _5 = 6.78;
   double total;
   int sentinela = 2;    
   public void calcValor(){
      while ( sentinela != -1 ){   
         System.out.print( "Insira o n£mero do produto: ");
         int numero = in.nextInt();
         System.out.print( "Insira a quantidade vendida: ");
         int quant = in.nextInt();
         switch ( numero ){
            case 1:
               total = total + (_1 * quant);
               break;
            case 2:
               total = total + (_2 * quant);
               break;
            case 3:
               total = total + (_3 * quant);
               break;
            case 4:
               total = total + (_4 * quant);
               break;
            case 5:
               total = total + (_4 * quant);
               break;
               }
           
       System.out.print( "Deseja adicionar outro produto(1 p/cont. -1 p/ cancelar)" );          
       sentinela = in.nextInt();
    }      
   }  
   
   public void mostraValor(){   
      System.out.printf( "O total da fatura e $ %.2f", total);  
      }


   public static void main( String args [] ){
   
   new Loja().calcValor();
   new Loja().mostraValor();
   }


}

Tenta fazer o seu main assim:

public static void main( String args [] ){
    Loja teste = new Loja();
    teste.calcValor();
    teste.mostraValor();
    }

ja exprementou debugar?

Vc tentou fazer o que disse em cima? Se não deu certo fale.

so uma perguntinha pq vc declarou as variaveis dessa forma _1, _2?

Acho que foi para simbolizar os numeros dos produtos(produto 1, produto 2…) :slight_smile:

Opa grande Francislon.
Cara, você pode explicar porque não estava carregando, e o que este método que vc sugere faz? É que estou iniciando no mundo java agora e eu estava analisando esse problema e não identifiquei nada.:shock:

    new Loja().calcValor();
    new Loja().mostraValor();

Quando vc dá um new Loja()…
vc está criando uma instancia unica…
logo vc cria uma instancia e manda calcular o valor e depois cria outra instancia e manda mostrar o valor, porém as instancias não tem interligação. Por isso eu criei uma unica instancia:

     Loja teste = new Loja();
     teste.calcValor();
     teste.mostraValor();

Quando crio a instancia ‘teste’, é criado um objeto na mémoria do tipo Loja. Logo eu mando calcular o valor através dessa instancia e mando mostrar o valor calculado dessa instancia.

Espero que tenha entendido.
Abraço. :slight_smile:

Cara, valeu mesmo eu entendi sim…muito obrigado!
Eu não tinha sacado esse lance de o java criar a variável na memória.
É que eu estou iniciando agora no mundo java.
Valeuuu!!! :smiley:

[quote=josanto]Cara, valeu mesmo eu entendi sim…muito obrigado!
Eu não tinha sacado esse lance de o java criar a variável na memória.
É que eu estou iniciando agora no mundo java.
Valeuuu!!! :smiley:
Só uma dúvida. Obrigatoriamente tenho que usar o nome da classe “Loja” para criar um objeto “Teste”? pois tentei com um outra e não deu certo!
[/quote]

Sim cara. Quando vc vai criar um objeto de uma determinada classe vc tem que dizer qual é o nome da classe.