0

my program lets a user compute two numbers then performs a simple calculation based on operator inputted by the user. so my source code is:

    System.out.print("Enter First Number: ");
    int num1 = scanNum.nextInt();
    
    System.out.print("Enter Second Number: ");
    int num2 = scanNum.nextInt();
    
    System.out.print("Enter Operator (+, -, * or /): ");
    char opt = scanOpt.next().charAt(0);
    
    scanNum.close();
    scanOpt.close();
    
    
    switch (opt)    
    {
        case '+':
            float result = num1 + num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
            
        case '-':
            result = num1 - num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        case '*':
            result = num1 * num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        case '/':
            result = num1 / num2;
            System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
            break;
        
        default:
            System.out.println("Invalid Operator!");
            break;

it works well but whenever it divides two numbers like for example " 6.0 / 4.0 " the tenth decimal doesn't appear. the correct output should be:

Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.5

but using my own source code the output is:

Enter First Number: 6
Enter Second Number: 4
Enter Operator (+, -, * or /): /
6 / 4 = 1.0
Liyanna
  • 119
  • 10

2 Answers2

1

This happens because Java divides two Integers, which results in an integer output. Try either declaring the inputs as float or alternativeley

1.0 * num1 / num2

This "converts" the num1 to a float value.

mptr
  • 124
  • 1
  • 8
  • i already casted the num1 and num2 into double and it worked. but this one also worked. thanks for this! – Liyanna Dec 14 '20 at 15:22
0
        double result;
        switch (opt)    
        {
            case '+':
                result = (double) num1 + num2;
                System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                break;
                
            case '-':
                result = (double)num1 - num2;
                System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                break;
            
            case '*':
                result = (double) num1 * num2;
                System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                break;
            
            case '/':
                result = (double) num1 / num2;
                System.out.println(num1 + " " + opt + " " + num2 + " = " +result);
                break;
            
            default:
                System.out.println("Invalid Operator!");
                break;
        }
Liyanna
  • 119
  • 10