Código não reconhece a variável e não executa uma ação

import java.io.IOException;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) throws IOException { {
        Scanner sc = new Scanner(System.in);
        int Iing1, Iing2, Ming1, valorMing, valorIing;
        String teste;
        char filmes, f3d; 
        
        System.out.println("O ingresso custa R$15 reais a meia e R$20 reais a inteira! ");
        System.out.print("Os filmes em cartaz são: \n Besouro Azul \n Barbie \n Oppenheimer \n");
        
        System.out.println("Vai querer ingressos para filme em 3D? (responda com 's' ou 'n') *adicional de 10 reais*");
        f3d = (char)System.in.read();
        
        if ((f3d == 's') || (f3d == 'S')) {
            System.out.println("Quantos ingressos 'inteira' você vai querer? ");
            Iing1 = sc.nextInt();
            System.out.printf("Vai querer ingressos 'meia'? \n");
            teste = sc.next();
            
            if ((teste == "sim") || (teste == "SIM")) {
                System.out.println("Quantos ingressos 'meia' você vai querer? ");
                Iing2 = sc.nextInt();
                valorIing = (Iing1 * 20) + (Iing2 * 15);
                System.out.println("O valor dos ingressos deu: R$"+ valorIing);
            }
        } else {
            System.out.println("Quantos ingressos meia você vai querer? ");
            Ming1 = sc.nextInt();
            valorMing = Ming1 * 15;
            System.out.println("O valor do(s) ingresso(s) deu: R$" + valorMing);
        }

Quando chega no segundo “if” ele n executa o “if”. Resultado:

O ingresso custa R$15 reais a meia e R$20 reais a inteira! 
Os filmes em cartaz são: 
Besouro Azul  
Barbie 
Oppenheimer
Vai querer ingressos para filme em 3D? (responda com 's' ou 'n') *adicional de 10 reais*
s
Quantos ingressos 'inteira' você vai querer?
1
Vai querer ingressos 'meia'?
sim

e para ali.

Alguém pode me ajudar a resolver?

Procure fazer a leitura com Scanner usando o método nextLine() para evitar problemas:

Iing1 = Integer.parseInt(sc.nextLine());

Mude o seu código para ler os dados dessa forma e veja se funciona.

Para entender sobre esse problema, dá uma lida nisso: Diferença entre next() e nextLine() - #2 por Lucas_Camara (no link, veja a resposta do @staroski logo em seguinda também)


Nessa parte, vc pode usar o `Scanner´ para ler essa informação também.

Compare Strings utilizando o método equals

1 curtida