Почему не выполняется условие ? Java

Дана задача: Написать программу, которая переводит значение угла из градусов в радианы, и наоборот, в зависимости от символа при вводе.

Например: 45.00D означает значение в градусах, а 45.00R - в радианах.

После ввода числа, программа не даёт ввести символ и сразу переходит к выполнению условия error.

Код программы :

package NIIT;

import java.util.Scanner;

public class RadianConvertor {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Value");
        double value = scan.nextDouble();
        System.out.println("Enter degrees or radian");
        String letter = scan.nextLine();
   
        double Pi = 3.14159265359;
    
        if (letter.equals("D") || letter.equals("d")) {
            System.out.println(value * Pi / 180);
        }
        if (letter.equals("R") || letter.equals("r")) {
            System.out.println(value * 180 / Pi);
        }
        else {
            System.out.println("Error");
        }
    }
}

Результат выполнения :

Value
12
Enter degrees or radian
Error
    
Process finished with exit code 0

Ответы (1 шт):

Автор решения: Agzam

Вам следует заменить && на || ,

тк && - означает И, а letter не может быть одновременно d и D, поэтому Вам нужен || (ИЛИ)

Хотя я бы на твоем месте сделал следующее: letter.toLowerCase().equals("d")

package NIIT;

import java.util.Scanner;

public class RadianConvertor {

    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("Value");
        double value = Double.parseDouble(scan.nextLine()); // Лучше nextLine, и затем parseDouble
        System.out.println("Enter degrees or radian");
        String letter = scan.nextLine();
        scan.close(); // Лучше закрывать Scanner;

        double Pi = Math.PI; // Лучше использовавть уже готовый PI
        
        if(letter.toLowerCase().equals("d")) {  // toLowerCase() заменяет все символы на строчные
            System.out.println(value*Pi/180);
        } else if(letter.toLowerCase().equals("r")) {
            System.out.println(value*180/Pi);
        }else{
            System.out.println("Error");
        }
    }
}
→ Ссылка