Termina em BUILD SUCCESSFUL (total time: 1 second) não executando o código

Desenvolvi este código para calcular o volume de sólidos de revolução, porem ao executar ele não aprece os outputs e termina logo em no BUILD SUCCESSFUL.

A entrada deveria ser:

cone
2.5
3
esfera
3.1
fim
e a saida: 19.63
124.79

Segue o código:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        String tipo;
        double raio;
        double altura;
        double volume;

        Scanner scanner = new Scanner(System.in);

        System.out.println("Qual é o tipo de sólido?");
        tipo = scanner.next();
        tipo = tipo.toLowerCase();

        if (tipo.equals("esfera")) {

            System.out.println("Qual é o raio?");
            raio = scanner.nextInt();

            volume = calcularVolume(tipo, raio, 0);

            System.out.println("----------");
            System.out.println("Volume: " + volume);
            System.out.println("----------");

        } else if (tipo.equals("cilindro") || tipo.equals("cone")) {

            System.out.println("Qual é o raio?");
            raio = scanner.nextInt();

            System.out.println("Qual é a altura?");
            altura = scanner.nextInt();

            volume = calcularVolume(tipo, raio, altura);

        } else if (tipo.equals("fim")) {

        }
    }

    public static double calcularVolume(String tipoDeSolido, double raio, double altura) {

        double volume = 0;

        tipoDeSolido = tipoDeSolido.toLowerCase();

        if (tipoDeSolido.equals("esfera")) {

            volume = (4 / 3) * Math.PI * Math.pow(raio, 3);

        } else if (tipoDeSolido.equals("cilindro")) {

            volume = Math.PI * Math.pow(raio, 2) * altura;

        } else if (tipoDeSolido.equals("cone")) {

            volume = (1 / 3) * Math.PI * Math.pow(raio, 2) * altura;

        } else {

        }

        return volume;
    }
}

Vc está rodando o código de fato ou apenas compilando ele? Como vc está fazendo? Está usando qual IDE?

Se você não estiver usando uma IDE(Eclipse, Netbeans, InteliJ), pode, na linha de comando:

   javac programa.java para compilar o programa
e
   java programa.class para executá-lo.

Esse trecho não ficaria melhor depois do encerramento do bloco else?

estou compilando no netbeans

agora ta compilando porém da erro depois que introduzo o valor do raio

Agora esta compilando, mas ao introduzir o tipo e o raio em seguida da erro, acredito que seja nessa parte do código, mas nao tenho certeza, ja fiz alguns teste sem sucesso.

não sei o que fiz, mas está executando porem depois que insiro o valor do raio da erro

Qual erro?

Exception in thread “main” java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.main(Main.java:32)
C:\Users\arthu\AppData\Local\NetBeans\Cache\11.1\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\arthu\AppData\Local\NetBeans\Cache\11.1\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 5 seconds)

As variáveis foram definidas como double e você usa sc.nextInt() em lugar de sc.nextDouble()

De qualquer forma, acho que você deveria optar por:

raio = Double.parseDouble(sc.nextLine());

bom mano não consegui entender direito por que na minha IDE aqui deu de boa (NeatBeans 8.2), mas pude notar que na parte de calcular o cone || cilindro você não pois o System.out.print("Volume "+volume);
ou seja, ele não vai dar nenhuma saída mesmo.